/* AMX Mod script. * * Warcraft 3: Frozen Throne * by Pimp Daddy (OoTOAoO) * http://www.4hm.net * * Credits to: * Spacedude (for War3 MOD) * Ludwig Van (for flamethrower) * OLO (for spectating rank info) * JGHG for the mole code * [AOL]Demandred, [AOL]LuckyJ for help coding it for steam * [AOL]Demandred for freezetime exploit fix * Denkkar for some of his code (ie. STEAM_POWERED) * Everyone at amxmod.net for help * joecool12321 for various health related fixes * Tri Moon for various improvements (No Race, war3menu, etc...) * xeroblood for spotting some bugs for me :) * bad-at-this for contributing the status bar code used for godmode (big bad voodoo) * kamikaze for... help w/testing version before release always helping people out on the forums contributing code for the anti-skywalking * lui for the delayed ultimate code * The following people helped convert the text to German: Walken / Altegarde.com Fire ^^plan.los^^ * The following people helped convert the text to French: laurent5425 */ #include #include #include #include #if !defined _amxmodx_included #include #include #else #include #endif // THESE ARE THE ONLY OPTIONS THAT NEED TO BE CHANGED DURING COMPILE TIME #define STEAM_POWERED 1 // Set this to 0 if you are running Counterstrike 1.5, leave at 1 for 1.6 #define CSSTATS_ENABLED 0 // Set this to 0 if you don't want spectating rank information // Language Options #define ENGLISH 1 // Set this to 1 to use english (ALL LANGUAGE WILL BE ENGLISH) #define GERMAN 0 // Set this to 1 if you would like *MOST* of the language to be in German #define FRENCH 0 // Set this to 1 if you would like *MOST* of the language to be in French #if (GERMAN && FRENCH) || (GERMAN && ENGLISH) || (ENGLISH && FRENCH) new thereshouldbeaneerorherebecausethiswordiswaytoolongforavariable = 0 // You have more than one language selected if there is a warning here #endif #if STEAM_POWERED new zoomed[33] #endif #if CSSTATS_ENABLED #include #endif // ****** Item and Race Information #if GERMAN new racename[9][] = {"keine Rasse","Untote Plage","Menschliche Allianz","Orkische Horde","Nachtelfen von Kalimdor","Blutmagier","Schattenjaeger","Waechter","Crypt Lord"} new shortracename[9][] = {"keine Rasse","Untote","Menschen","Ork","Nachtelfe","Blutmagier","Schattenjaeger","Waechter","Crypt Lord"} new itemname[9][] = {"Ankh der Reinkarnation","Stiefel der Geschwindigkeit","Klauen des Angriffs","Mantel des Schattens","Maske des Todes","Kette der Immunität","Frostkugel","Gesundheitsstein","Buch der Erfahrung"} new shortitemname[9][] = {"Ankh","Stiefel","Klauen","Mantel","Maske","Kette","Kugel","Stein","Buch"} new itemname2[9][] = {"Rolle der Wiederbelebung","Schutz des Maulwurfs","Helm der Vortrefflichkeit","Amulet der Katze","Ferdersocken","Brennende Handschuhe der Waerme","Ring der Regeneration +1","Chamaeleon","Maulwurf"} new shortitemname2[9][] = {"Rolle","Schutz","Helm","Amulet","Socken","Handschuhe","Ring","Chemaeleon","Maulwurf"} new race1skill[4][] = {"Vampir Aura","Unheilige Aura","Schweben","Selbstmord-Bomber"} new race2skill[4][] = {"Unsichtbarkeit","Aura der Hingabe","Hieb","Telepodertieren"} new race3skill[4][] = {"Kritischer Treffer","Kritische Granaten","Ausrüstungs Reinkarnation","Kettenblitz"} new race4skill[4][] = {"Ausweichen","Dornen Aura","Schadens Aura","Wucherwurzeln"} new race5skill[4][] = {"Pheonix","Verbannung","Mana Klau","Flamen Angriff"} new race6skill[4][] = {"Welle der Heilung","Hex","Schlangen Waechter","Voodoozauber"} new race7skill[4][] = {"Faechernde Messer","Blinzeln","Schattenschlag","Blutrache"} new race8skill[4][] = {"Aufspießen","Stachelruestung","Aas Kaefer","Heuschrecken Schwarm"} #endif #if FRENCH new racename[9][] = {"Sans Race","Mort Vivant","Alliance Humaine","Horde de Orcs","Elfes de la Nuit de Kalimdor","Magicien","Chasseur Fantome","Gardien","Lord de la Crypte"} new shortracename[9][] = {"Sans Race","Mort Vivant","Humain","Orcs","Elfes","Magicien","Chasseur","Gardien","Lord"} new itemname[9][] = {"Reincarnation Armement","Bottes de vitesse","Les griffes d'attaque","Manteau des Ombres","Masque des Morts","Collier d'immunite","Orbe de Glace","Amulette de Vie","Tome d'expérience"} new shortitemname[9][] = {"Arme","Vitesse","Griffes","Manteau","Masque","Collier","Orbe","Vie","Experience"} new itemname2[9][] = {"Resusciter","Protection Taupe","Anti headshots","Amulette du Silence","Bottes de graviter","Les gants de feu","Anneau de regeneration","Cameleon","Taupe"} new shortitemname2[9][] = {"Revivre","Protection","Anti headshots","Silence","Graviter","Gants","Anneau","Cameleon","Taupe"} new race1skill[4][] = {"Vampire","Impie","Levitation","Kamikase"} new race2skill[4][] = {"Invisibiliter","Devotion HP","Stopper Ennemi","Teleportation"} new race3skill[4][] = {"Dommage HP","Super Grenade","Reincarnation Armement","Chaine d'eclair"} new race4skill[4][] = {"Exquiver Tir","Report HP Ennemi","Mega HP Ennemi","Plantes Agrippantes"} new race5skill[4][] = {"Ranimer Coequipiers","Slap Ennemi","Vol Armure","Lance Flamme"} new race6skill[4][] = {"Guerir Coequipiers","Sortilege","Unite Serpent","3 sec d'Invincibilité"} new race7skill[4][] = {"Taupes","Capacites Ennemies HS","Poignard Empoisonne","Ressusciter"} new race8skill[4][] = {"Empaler","Renvoi Dommages","Scarabées Charognard","Essaim de sauterelles"} #endif #if ENGLISH new racename[9][] = {"No race","Undead Scourge","Human Alliance","Orcish Horde","Night Elves of Kalimdor","Blood Mage","Shadow Hunter","Warden","Crypt Lord"} new shortracename[9][] = {"No race","Undead","Human","Orc","Night Elf","Blood Mage","Shadow Hunter","Warden","Crypt Lord"} new itemname[9][] = {"Ankh of Reincarnation","Boots of Speed","Claws of Attack","Cloak of Shadows","Mask of Death","Necklace of Immunity","Orb of Frost","Periapt of Health","Tome of Experience"} new shortitemname[9][] = {"Ankh","Boots","Claws","Cloak","Mask","Necklace","Orb","Periapt","Tome"} new itemname2[9][] = {"Scroll of Respawning","Mole Protectant","Helm of Excellence","Amulet of the Cat","Sock of the Feather","Flaming Gloves of Warmth","Ring of Regeneration +1","Chameleon","Mole"} new shortitemname2[9][] = {"Scroll","Protectant","Helm","Amulet","Sock","Gloves","Ring","Chameleon","Mole"} new race1skill[4][] = {"Vampiric Aura","Unholy Aura","Levitation","Suicide Bomber"} new race2skill[4][] = {"Invisibility","Devotion Aura","Bash","Teleport"} new race3skill[4][] = {"Critical Strike","Critical Grenade","Equipment Reincarnation","Chain Lightning"} new race4skill[4][] = {"Evasion","Thorns Aura","Trueshot Aura","Entangle Roots"} new race5skill[4][] = {"Pheonix","Banish","Siphon Mana","Flame Strike"} new race6skill[4][] = {"Healing Wave","Hex","Serpent Ward","Big Bad Voodoo"} new race7skill[4][] = {"Fan of Knives","Blink","Shadow Strike","Vengeance"} new race8skill[4][] = {"Impale","Spiked Carapace","Carrion Beetles","Locust Swarm"} #endif // ****** End Item and Race Information new MOD[32]={"AMX"} new VIP_ESCAPE_BONUS new VIP_KILL_BONUS new DEFUSER_KILL_BONUS new KILL_BOMB_CARRIER new BOMBPLANTXP new DEFUSEXP new HOSTAGEXP new KILLRESCUEMANXP new XPBONUS new HEADSHOT_BONUS new ROUNDXP // Team Numbers for get_user_team(id) #define SPEC 0 #define TEAM_T 1 #define TEAM_CT 2 // NEVER CHANGE THESE !!! DISASTEROUS RESULTS #define TE_BEAMPOINTS 0 #define TE_EXPLOSION 3 #define TE_EXPLFLAG_NONE 0 #define TE_SMOKE 5 #define TE_BEAMENTS 8 #define TE_IMPLOSION 14 #define TE_SPRITETRAIL 15 #define TE_BEAMCYLINDER 21 #define TE_BEAMFOLLOW 22 #define TE_ELIGHT 28 #define TE_PLAYERATTACHMENT 124 #define TE_LARGEFUNNEL 100 #define MAX_NAME_LENGTH 31 #define MAX_VAR_LENGTH 64 // END // Do not change these #define MAXGLOW 150 #define ULTIMATESEARCHTIME 50 #define TELEPORT_RADIUS 50 #define LIGHTNING_RANGE 500 //END // Shopmenu Items #define BOOTSPEED 275.0 #define CLAWSOFATTACK 6 #define CLOAKINVISIBILITY 150 #define MASKPERCENT 0.3 #define FROSTSPEED 125.0 #define HEALTHBONUS 15 //END // User stats parms id #define STATS_KILLS 0 #define STATS_DEATHS 1 #define STATS_HS 2 #define STATS_TKS 3 #define STATS_SHOTS 4 #define STATS_HITS 5 #define STATS_DAMAGE 6 #define ANKH 1 #define BOOTS 2 #define CLAWS 3 #define CLOAK 4 #define MASK 5 #define IMMUNITY 6 #define FROST 7 #define HEALTH 8 #define TOME 9 #define RESPAWN 1 #define PROTECTANT 2 #define HELM 3 #define CAT 4 #define FEATHER 5 #define INFERNO 6 #define REGEN 7 #define CHAMELEON 8 #define MOLE 9 // team ids #define UNASSIGNED 0 #define TS 1 #define CTS 2 #define AUTO_TEAM 5 // For Icon events #define ICON_HIDE 0 #define ICON_SHOW 1 #define ICON_FLASH 2 // Temporary Fix for HE nades not being read in czero new Float:he_origin[33][3] // End Temporary Fix new bool:u_delay = false new bool:no_he = false new bool:buycalled=false new bool:buytime new bool:game_commence[33]=false new bool:gotShield[33] new bool:resetskill[33] new bool:teleportmenu[33] new bool:givenade new bool:hasgodmode[33] new bool:pheonix[33] new bool:skinchanged[33] new bool:givepistol new bool:give_items[33] = false new bool:playerhasspawned[33] new bool:spawnedfromitem[33] = false new bool:ismole[33]=false new bool:justgivennade[33] = false new bool:itemsrunning[33] = false new bool:g_specMode[33] new bool:blinkdelayed[33] new bool:menupend[33] = false new bool:to_be_revived[33] = false // Sprites new shadow new snow new fire new burning new grunt new g_sModelIndexFireball new g_sModelIndexSmoke new iBeam4 new m_iTrail new m_iSpriteTexture new lightning new flaresprite // Captured Messages new gmsgStatusText new gmsgDeathMsg new gmsgFade new gmsgShake new gmsgIcon new deathmessageshown[33] new g_friend[33] new bombDefuserIndex[33] new bombCarrier new bombdefuser new mysql new mysqltablename[64] new alive_before_explosion[33] = false new suicideAttempt[33] new vipID = 0 new savedOldLoc[33][3] new savedNewLoc[33][3] new teleportid[33][32] new godshealth[33] new flashg[33] new freezetime = 0 new freezecalled = 0 new isburning[33] new flame_count[33] new healinghit[33] new serpentteam[33] new pheonixexistsT new pheonixexistsCT new hasblink[33] = false new carrioncount[33]=2 new spawnEntString[2][] = {"info_player_start","info_player_deathmatch"} new shadowcount[33] = 2 new rings[33] new nadetime[33] new p_level[33] new p_skills[33][5] new iglow[33][4] new armorondeath[33] new savedweapons[33][32] new savednumber[33] = 0 new playerxp[33] new playeritem[33] new playeritem2[33] new bool:isBuyzone[33] new bool:p_evadenextshot[33] new bool:diedlastround[33] new bool:stunned[33] new bool:slowed[33] new bool:issearching[33] new bool:lightninghit[33] new bool:ultimateused[33] new bool:hasdefuse[33] new bool:helmet[33] new bool:changingteam[33] new bool:knifeselected[33] new bool:warcraft3 new bool:endround new Float:voting new Float:vote_ratio new option new hostagesaver new serpents[33] new he[33] new CTSkins[4][]={"sas","gsg9","urban","gign"} new TSkins[4][]={"arctic","leet","guerilla","terror"} new Float:p_vampiric[3] = {0.15,0.30,0.45} // Vampiric Aura (skill 1) new p_vampirichealth[3] = {100,100,100} // Vampiric Aura Max Health (skill 1) new Float:p_unholy[3] = {265.0,285.0,320.0} // Unholy Aura (skill 2) new Float:p_levitation[3] = {0.8,0.6,0.4} // Levitation (skill 3) new p_invisibility[3] = {200,150,100} // Invisibility (skill 1) new p_devotion[3] = {115,130,145} // Devotion Aura (skill 2) new Float:p_bash[3] = {0.15,0.30,0.45} // Bash (skill 3) new Float:p_critical[3] = {0.15,0.15,0.15} // Critical Strike (skill 1) new Float:p_grenade[3] = {2.0,4.0,6.0} // Critical Grenade (skill 2) new Float:p_ankh[3] = {0.333,0.666,1.0} // Equipment reincarnation (skill 3) new Float:p_evasion[3] = {0.1,0.2,0.3} // Evasion (skill 1) new Float:p_thorns[3] = {0.05,0.1,0.15} // Thorns Aura (skill 2) new Float:p_trueshot[3] = {0.15,0.3,0.45} // Trueshot Aura (skill 3) new Float:p_pheonix[3] = {0.333,0.666,1.0} // Pheonix (skill 1) new Float:p_banish[3] = {0.07,0.13,0.20} // Banish (skill 2) new Float:p_mana[3] = {0.02,0.04,0.08} // Siphon Mana (skill 3) new Float:p_heal[3] = {6.0,4.0,2.0} // Healing Wave (skill 1) new Float:p_hex[3] = {0.05,0.10,0.15} // Hex (skill 2) new p_serpent[3] = {1,2,3} // Serpent Ward (skill 3) new Float:p_fan[3] = {0.05,0.10,0.15} // Fan of Knives (skill 1) new Float:p_blink[3] = {0.333,0.666,1.0} // Blink (skill 2) new Float:p_shadow[3] = {0.15,0.30,0.45} // Shadow Strike (skill 3) new Float:p_impale[3] = {0.15,0.30,0.45} // Impale (skill 1) new Float:p_spiked[3] = {0.05,0.1,0.15} // Spiked Carapace (skill 2) new Float:p_carrion[3] = {0.15,0.25,0.45} // Carrion Beetle (skill 3) new xplevel[11] = {0,150,300,600,1000,1500,2100,2800,3400,4500,5500} new xpgiven[11] = {60,80,100,120,140,160,180,200,220,240,260} new Float:weaponxpmultiplier[31] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0} new itemcost[9] = {1500,1500,1000,800,2000,800,2000,1000,4000} new itemcost2[9] = {5000,1500,550,1500,1500,1750,1000,9000,16000} public set_xpmultiplier(){ if (!get_cvar_num("mp_weaponxpmodifier")) return PLUGIN_CONTINUE weaponxpmultiplier[CSW_USP] = 3.0 weaponxpmultiplier[CSW_DEAGLE] = 3.0 weaponxpmultiplier[CSW_GLOCK18] = 3.0 weaponxpmultiplier[CSW_ELITE] = 4.0 weaponxpmultiplier[CSW_P228] = 3.0 weaponxpmultiplier[CSW_FIVESEVEN] = 3.0 weaponxpmultiplier[CSW_XM1014] = 1.25 weaponxpmultiplier[CSW_M3] = 1.5 weaponxpmultiplier[CSW_MP5NAVY] = 1.0 weaponxpmultiplier[CSW_UMP45] = 1.25 weaponxpmultiplier[CSW_P90] = 1.25 weaponxpmultiplier[CSW_TMP] = 1.5 weaponxpmultiplier[CSW_MAC10] = 1.5 weaponxpmultiplier[CSW_AWP] = 1.0 weaponxpmultiplier[CSW_M4A1] = 1.0 weaponxpmultiplier[CSW_AK47] = 1.0 weaponxpmultiplier[CSW_AUG] = 1.0 weaponxpmultiplier[CSW_SG552] = 1.0 weaponxpmultiplier[CSW_G3SG1] = 1.5 weaponxpmultiplier[CSW_SG550] = 1.5 weaponxpmultiplier[CSW_M249] = 1.25 weaponxpmultiplier[CSW_SCOUT] = 3.0 weaponxpmultiplier[CSW_HEGRENADE] = 2.0 weaponxpmultiplier[CSW_KNIFE] = 6.0 weaponxpmultiplier[CSW_C4] = 2.0 weaponxpmultiplier[CSW_SMOKEGRENADE] = 1.0 weaponxpmultiplier[CSW_FLASHBANG] = 1.0 return PLUGIN_CONTINUE } public items(parm2[2]){ // Displays the player's items in the bottom center of the screen new temp[128] new message[256] new id = parm2[0] if (playeritem[id]!=0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN) format(temp,127,"%s: %s and %s x%d","Current Items",playeritem[id]?itemname[playeritem[id]-1]:"",playeritem2[id]?itemname2[playeritem2[id]-1]:"",rings[id]) else format(temp,127,"%s: %s and %s","Current Items",playeritem[id]?itemname[playeritem[id]-1]:"",playeritem2[id]?itemname2[playeritem2[id]-1]:"") } if (playeritem[id]==0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN) format(temp,127,"%s: %s x%d","Current Item",playeritem2[id]?itemname2[playeritem2[id]-1]:"",rings[id]) else format(temp,127,"%s: %s","Current Item",playeritem2[id]?itemname2[playeritem2[id]-1]:"") } if (playeritem[id]!=0 && playeritem2[id]==0) format(temp,127,"%s: %s","Current Item",playeritem[id]?itemname[playeritem[id]-1]:"") itemsrunning[id]=true add(message,255,temp) set_hudmessage(255,255,255,-1.0,0.945,2, 1.5, 40.0, 0.02, 5.0, 1) if (is_user_alive(id) && !endround) show_hudmessage(id,message) set_task(1.0,"items",451+id,parm2,2) return PLUGIN_CONTINUE } public displaylevel(id,hide){ if (id==0) return PLUGIN_CONTINUE if(get_cvar_num("FT_items_in_hud")){ new parm2[2] parm2[0] = id if(!itemsrunning[id] && !endround) items(parm2) } new oldlevel = p_level[id] if (playerxp[id]<0) playerxp[id]=0 for (new i=0; i<=10; ++i){ if (playerxp[id]>=xplevel[i]) p_level[id]=i else break } new xpstring[512] if(get_cvar_num("FT_items_in_hud")){ if(playeritem2[id]==0) { if (p_level[id]==0) format(xpstring,511,"%s XP: %d/%d",racename[p_skills[id][0]],playerxp[id],xplevel[p_level[id]+1]) else if (p_level[id]<10) format(xpstring,511,"%s %s %d XP: %d/%d",racename[p_skills[id][0]],"Level",p_level[id],playerxp[id],xplevel[p_level[id]+1]) else format(xpstring,511,"%s %s %d XP: %d/%d",racename[p_skills[id][0]],"Level",p_level[id],xplevel[10],xplevel[10]) } else { if (p_level[id]==0) format(xpstring,511,"%s XP: %d/%d",racename[p_skills[id][0]],playerxp[id],xplevel[p_level[id]+1]) else if (p_level[id]<10) format(xpstring,511,"%s %s %d XP: %d/%d",racename[p_skills[id][0]],"Level",p_level[id],playerxp[id],xplevel[p_level[id]+1]) else format(xpstring,511,"%s %s %d XP: %d",racename[p_skills[id][0]],"Level",p_level[id],playerxp[id]) } }else{ new temp2[128] if (playeritem[id]!=0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN && rings[id]>1) format(temp2,127,"%s and %ss x%d",playeritem[id]?shortitemname[playeritem[id]-1]:"",playeritem2[id]?shortitemname2[playeritem2[id]-1]:"",rings[id]) else format(temp2,127,"%s and %s",playeritem[id]?shortitemname[playeritem[id]-1]:"",playeritem2[id]?shortitemname2[playeritem2[id]-1]:"") } else if (playeritem[id]==0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN && rings[id]>1) format(temp2,127,"%ss x%d",playeritem2[id]?shortitemname2[playeritem2[id]-1]:"",rings[id]) else format(temp2,127,"%s",playeritem2[id]?shortitemname2[playeritem2[id]-1]:"") } else if (playeritem[id]!=0 && playeritem2[id]==0) format(temp2,127,"%s",playeritem[id]?shortitemname[playeritem[id]-1]:"") if (p_level[id]==0) format(xpstring,511,"%s XP: %d/%d %s",racename[p_skills[id][0]],playerxp[id],xplevel[p_level[id]+1],temp2) else if(p_level[id]<10) format(xpstring,511,"%s %s %d XP: %d/%d %s",shortracename[p_skills[id][0]],"Level",p_level[id],playerxp[id], xplevel[p_level[id]+1],temp2) else format(xpstring,511,"%s %s %d XP: %d %s",shortracename[p_skills[id][0]],"Level",p_level[id],playerxp[id],temp2) } message_begin( MSG_ONE, gmsgStatusText, {0,0,0}, id) write_byte(0) write_string(xpstring) message_end() if (p_level[id] > oldlevel){ // Level Gained set_hudmessage(200, 100, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2) show_hudmessage(id,"You gained a Level") if (file_exists("sound/warcraft3/levelupcaster.wav")==1 && is_user_alive(id)) emit_sound(id,CHAN_ITEM, "warcraft3/levelupcaster.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else if (is_user_alive(id)) emit_sound(id,CHAN_ITEM, "plats/elevbell1.wav", 1.0, ATTN_NORM, 0, PITCH_LOW) } new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] while (skillsused>p_level[id]){ if (p_skills[id][4]==1 && p_level[id]<6) p_skills[id][4]=0 else if (p_skills[id][1]>=p_skills[id][2] && p_skills[id][1]>=p_skills[id][3]) --p_skills[id][1] else if (p_skills[id][2]>=p_skills[id][1] && p_skills[id][2]>=p_skills[id][3]) --p_skills[id][2] else if (p_skills[id][3]>=p_skills[id][1] && p_skills[id][3]>=p_skills[id][2]) --p_skills[id][3] skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] } if (hide!=1 && p_skills[id][0]!=0 && hide!=3){ new temp[128] new message[256] format(message,255,"%s",racename[p_skills[id][0]]) if (p_level[id]){ format(temp,127,"^n%s %d","Level",p_level[id]) add(message,255,temp) } new skillcounter = 0 new skillcurrentrace[4][64] while (skillcounter < 4){ if (p_skills[id][0] == 1){ copy(skillcurrentrace[skillcounter],63,race1skill[skillcounter]) } else if (p_skills[id][0] == 2){ copy(skillcurrentrace[skillcounter],63,race2skill[skillcounter]) } else if (p_skills[id][0] == 3){ copy(skillcurrentrace[skillcounter],63,race3skill[skillcounter]) } else if (p_skills[id][0] == 4){ copy(skillcurrentrace[skillcounter],63,race4skill[skillcounter]) } else if (p_skills[id][0] == 5){ copy(skillcurrentrace[skillcounter],63,race5skill[skillcounter]) } else if (p_skills[id][0] == 6){ copy(skillcurrentrace[skillcounter],63,race6skill[skillcounter]) } else if (p_skills[id][0] == 7){ copy(skillcurrentrace[skillcounter],63,race7skill[skillcounter]) } else if (p_skills[id][0] == 8){ copy(skillcurrentrace[skillcounter],63,race8skill[skillcounter]) } ++skillcounter } if (p_skills[id][1]){ format(temp,127,"^n%s %s %d",skillcurrentrace[0],"Level",p_skills[id][1]) add(message,255,temp) } if (p_skills[id][2]){ format(temp,127,"^n%s %s %d",skillcurrentrace[1],"Level",p_skills[id][2]) add(message,255,temp) } if (p_skills[id][3]){ format(temp,127,"^n%s %s %d",skillcurrentrace[2],"Level",p_skills[id][3]) add(message,255,temp) } if (p_skills[id][4]){ format(temp,127,"^n%s: %s","Ultimate",skillcurrentrace[3]) add(message,255,temp) } set_hudmessage(255, 255, 255, -1.0, 0.3, 0, 3.0, 5.0, 0.1, 0.2, 2) show_hudmessage(id,message) } if(get_cvar_num("sv_gravity")>650){ if (p_skills[id][0] == 1 && p_skills[id][3] && playeritem2[id]!=FEATHER){ // Levitation if (get_user_gravity(id)!=p_levitation[p_skills[id][3]-1]) set_user_gravity(id,p_levitation[p_skills[id][3]-1]) } else if (playeritem2[id]==FEATHER) set_user_gravity(id,0.35) else if (get_user_gravity(id)!=1.0) set_user_gravity(id,1.0) } else set_user_gravity(id,1.0) if (p_skills[id][0] == 2 && p_skills[id][1]){ // Invisibility if (knifeselected[id]){ new invisibility = p_invisibility[p_skills[id][1]-1]/2 set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,invisibility) } else set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,p_invisibility[p_skills[id][1]-1]) } else if (playeritem[id]==CLOAK){ if (knifeselected[id]){ new invisibility = CLOAKINVISIBILITY/2 set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,invisibility) } else set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,CLOAKINVISIBILITY) } else set_user_rendering(id) if ((p_skills[id][0] != 4 || !p_skills[id][1])){ // Evasion if (get_user_health(id)>=500) set_user_health(id,get_user_health(id)-1024) } new parm[1] parm[0]=id unholyspeed(parm) return PLUGIN_CONTINUE } public check_for_reviving(victim_id){ new players[32], numberofplayers, y get_players(players, numberofplayers) if(get_user_team(victim_id)==TEAM_T && pheonixexistsT>0){ for (y = 0; y < numberofplayers; ++y){ new id = players[y] if (pheonix[id] && !to_be_revived[victim_id] && !endround && id!=victim_id && !changingteam[victim_id] && is_user_alive(id) && get_user_team(id)==get_user_team(victim_id) && !is_user_alive(victim_id) && get_user_team(victim_id)!=SPEC){ pheonix[id]=false new parm[2], name[32] parm[0]=victim_id set_task(0.7,"func_spawn",2,parm,2) // Spawns player set_hudmessage(200, 100, 0, -0.8, 0.1, 0, 1.0, 5.0, 0.1, 0.2, 2) get_user_name(id,name,31) show_hudmessage(victim_id,"%s has revived you",name) client_print(victim_id,print_chat,"[%s] %s has revived you",MOD, name) get_user_name(victim_id,name,31) show_hudmessage(id,"You have revived %s, way to go !",name) client_print(id,print_chat,"[%s] You have revived %s, way to go !",MOD,name) pheonixexistsT-- return PLUGIN_CONTINUE } } } else if(get_user_team(victim_id)==TEAM_CT && pheonixexistsCT>0){ for (y = 0; y < numberofplayers; ++y){ new id = players[y] if (pheonix[id] && !to_be_revived[victim_id] && !endround && id!=victim_id && !changingteam[victim_id] && is_user_alive(id) && get_user_team(id)==get_user_team(victim_id) && !is_user_alive(victim_id) && get_user_team(victim_id)!=SPEC){ pheonix[id]=false new parm[2], name[32] parm[0]=victim_id set_task(0.7,"func_spawn",2,parm,2) // Spawns player set_hudmessage(200, 100, 0, -1.6, 0.1, 0, 1.0, 5.0, 0.1, 0.2, 2) get_user_name(id,name,31) show_hudmessage(victim_id,"%s has revived you",name) client_print(victim_id,print_chat,"[%s] %s has revived you",MOD, name) get_user_name(victim_id,name,31) show_hudmessage(id,"You have revived %s, way to go !",name) client_print(id,print_chat,"[%s] You have revived %s, way to go !",MOD,name) to_be_revived[victim_id]=true pheonixexistsCT-- return PLUGIN_CONTINUE } } } return PLUGIN_CONTINUE } public death(){ // Called when you die if (warcraft3==false) return PLUGIN_CONTINUE new killer_id = read_data(1) new victim_id = read_data(2) new headshot = read_data(3) if (task_exists(2000+victim_id)) // Remove the function that makes you jump if you're goombad remove_task(2000+victim_id) icon_controller(victim_id,ICON_HIDE) // Remove icon because you don't have an ultimate when you're dead ismole[victim_id]=false // For use w/mole protectant if (playeritem2[victim_id]==CHAMELEON || skinchanged[victim_id]) changeskin(victim_id,1) if (playeritem2[victim_id]==HELM) set_user_hitzones(victim_id) if(playeritem2[victim_id]==RESPAWN && !changingteam[victim_id]){ new parm[2] parm[0]=victim_id parm[1]=6 if(playeritem2[victim_id]!=MOLE){ playeritem2[victim_id]=0 rings[victim_id]=0 } playeritem[victim_id]=0 set_task(0.5,"func_spawn",72,parm,2) spawnedfromitem[victim_id]=true } rings[victim_id]=0 set_user_footsteps(victim_id, 0) new weaponname[20] read_data(4,weaponname,31) new weapon get_user_attacker(victim_id,weapon) if( headshot && killer_id!=victim_id && !deathmessageshown[victim_id] && get_user_team(victim_id)!=get_user_team(killer_id)){ playerxp[killer_id]+= HEADSHOT_BONUS if (get_cvar_num("FT_kill_objectives")) client_print(killer_id,print_chat,"[%s] You are awarded %d XP for having a headshot", MOD, HEADSHOT_BONUS)//? } if(!deathmessageshown[victim_id] && killer_id!=victim_id && !equal(weaponname,"world")){ deathmessageshown[victim_id]=true message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(killer_id) write_byte(victim_id) write_byte(headshot) write_string(weaponname) message_end() } changingteam[victim_id]=false diedlastround[victim_id]=true if (p_skills[victim_id][0] == 7 && p_skills[victim_id][4] && (!hasblink[killer_id] || killer_id==victim_id) && !u_delay){ // Vengeance new parm[2] parm[0]=victim_id parm[1]=6 if(!endround && !ultimateused[victim_id]){ set_task(1.2,"func_spawn",2,parm,2) ultimateused[victim_id]=true } } else if (p_skills[victim_id][0]==1 && p_skills[victim_id][4] && !hasblink[killer_id] && !changingteam[victim_id] && !u_delay){ // Suicide Bomber emit_sound(victim_id,CHAN_ITEM, "ambience/particle_suck1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) new parm[5], origin[3] get_user_origin(victim_id,origin) parm[0]=victim_id parm[1]=6 parm[2]=origin[0] parm[3]=origin[1] parm[4]=origin[2] set_task(0.1,"implosion",1,parm,5) set_task(0.2,"apacheexplode",2,parm,5) set_task(0.3,"blastcircles",3,parm,5) } check_for_reviving(victim_id) saveweapons(victim_id) if (killer_id && killer_id!=victim_id && victim_id){ new name[32] get_user_name(victim_id,name,31) if (get_user_team(killer_id)==get_user_team(victim_id)){ playerxp[killer_id]-=xpgiven[p_level[killer_id]] if (get_cvar_num("FT_kill_objectives")) client_print(killer_id,print_chat,"[%s] You are awarded %d XP for killing %s",MOD,xpgiven[p_level[killer_id]]*-1,name)//? } else{ if (!get_cvar_num("mp_weaponxpmodifier")){ playerxp[killer_id]+=xpgiven[p_level[victim_id]] if (get_cvar_num("FT_kill_objectives")) client_print(killer_id,print_chat,"[%s] You are awarded %d XP for killing %s",MOD,xpgiven[p_level[killer_id]],name)//? } else{ playerxp[killer_id]+=floatround(xpgiven[p_level[victim_id]]*weaponxpmultiplier[weapon]) if (get_cvar_num("FT_kill_objectives")) client_print(killer_id,print_chat,"[%s] You are awarded %d XP for killing %s",MOD,xpgiven[p_level[killer_id]],name)//? } if (victim_id==hostagesaver && get_user_team(victim_id)!=get_user_team(killer_id)){ playerxp[killer_id]+=KILLRESCUEMANXP client_print(killer_id,print_chat,"[%s] You received %d XP for killing the hostage rescuer",MOD, KILLRESCUEMANXP) } } displaylevel(killer_id, 1) } if (victim_id==bombdefuser && killer_id!=bombdefuser && get_user_team(victim_id)!=get_user_team(killer_id)){ new temp temp = DEFUSER_KILL_BONUS + xpgiven[p_level[victim_id]] playerxp[killer_id]+= temp if (get_cvar_num("FT_objectives")){ new killersname[33] get_user_name(killer_id,killersname,31) client_print(killer_id,print_chat, "[%s] received %s %d XP for killing the bomb defuser",MOD,killersname,temp) } } if (victim_id==bombCarrier && killer_id!=bombCarrier && get_user_team(victim_id)!=get_user_team(killer_id)){ new temp temp = KILL_BOMB_CARRIER + xpgiven[p_level[victim_id]] playerxp[killer_id]+= temp if (get_cvar_num("FT_objectives")){ new killersname[33] get_user_name(killer_id,killersname,31) client_print(killer_id,print_chat, "[%s] received %s %d XP for killing the bomb carrier",MOD,killersname,temp) } } new parameter[1] parameter[0]=victim_id set_task(1.0,"getuserinput",3,parameter,1) return PLUGIN_CONTINUE } public getuserinput(parm[1]){ new id = parm[0] new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] if (p_skills[id][0] == 0){ if(get_cvar_num("mp_savexp")){ get_xp_from_file(id,1) }else select_race(id) } else if (skillsused < p_level[id]) select_skill(id,0) else displaylevel(id, 1) return PLUGIN_HANDLED } public game_commencing(){ new players[32], numplayers, id get_players(players, numplayers) for (new i=0; i650){ if (p_skills[id][0] == 1 && p_skills[id][3] && playeritem2[id]!=FEATHER){ // Levitation if (get_user_gravity(id)!=p_levitation[p_skills[id][3]-1]) set_user_gravity(id,p_levitation[p_skills[id][3]-1]) } else if (playeritem2[id]==FEATHER) set_user_gravity(id,0.35) else set_user_gravity(id,1.0) } else set_user_gravity(id,1.0) if (playeritem2[id]==CAT) set_user_footsteps(id, 1) else set_user_footsteps(id, 0) if(playeritem2[id]!=CHAMELEON && skinchanged[id]) changeskin(id,1) if (task_exists(9000+id) && playeritem2[id]!=REGEN) remove_task(9000+id) if (playeritem[id]==HEALTH) set_user_health(id,get_user_health(id)+HEALTHBONUS) if(playeritem2[id]==REGEN && !task_exists(9000+id)) regenerate(parm) if (playeritem2[id]==HELM) set_user_hitzones(0,id,253) else set_user_hitzones(0,id,255) if (playeritem2[id]==CHAMELEON && is_user_alive(id)) changeskin(id,0) } public new_round(id){ // Called at the beginning of each round and when the event ResetHUD is called if (warcraft3==false) return PLUGIN_CONTINUE if(game_commence[id]){ playeritem[id] = 0 playeritem2[id] = 0 he[id] = 0 diedlastround[id]=false game_commence[id]=false } if(get_cvar_num("FT_competitive") && !buycalled){ set_task(get_cvar_float("mp_buytime")*60.0,"set_buytime",899) buycalled = true } icon_controller(id,ICON_HIDE) deathmessageshown[id]=false if (p_skills[id][0] == 0){ if(get_cvar_num("mp_savexp")) get_xp_from_file(id,1) else select_race(id) return PLUGIN_HANDLED } to_be_revived[id]=false // Temporary orc nade fix for czero if(is_running("czero")){ he_origin[id][0]=-1.234 he_origin[id][1]=-1.234 he_origin[id][2]=-1.234 } if (playerhasspawned[id]){ if (p_skills[id][0] == 6 && p_skills[id][3]) // Serpent Ward serpents[id]=p_serpent[p_skills[id][3]-1] else serpents[id]=0 if(!freezetime && !ultimateused[id]) icon_controller(id,ICON_SHOW) if(stunned[id] || slowed[id]) set_user_maxspeed(id,240.0) if(playeritem2[id]!=MOLE) playeritem2[id]=0 playeritem[id]=0 changeskin(id,1) displaylevel(id,1) return PLUGIN_HANDLED } u_delay = false if (get_cvar_num("FT_ultimatedelay")){ u_delay = true if (!task_exists(12385)) set_task(get_cvar_float("FT_ultimatedelay"), "udelay_cooldown", 12385) } if (menupend[id]){ if(get_cvar_num("mp_savexp")) get_xp_from_file(id,1) else select_race(id) menupend[id]=false } if (task_exists(21)) // Stops any ultimates from continuing when the new round starts remove_task(21) if (task_exists(26)) // Stops any ultimates from continuing when the new round starts remove_task(26) if (task_exists(id+500)) // Stop any cooldowns in effect remove_task(500+id) if (task_exists(id+645)) // Remove bomb count down remove_task(645+id) buytime=true checkmap() new parm[2] parm[0]=id if (freezecalled==0){ freezetime = 1 freezecalled = 1 } if(get_cvar_num("FT_blinkstartdisabled")){ blinkdelayed[id]=true set_task(get_cvar_float("FT_blink_delay"),"cooldown2",50 + id,parm,1) } if (get_cvar_num("FT_warn_suicide")) suicideAttempt[id] = 0 #if STEAM_POWERED set_user_maxspeed(id,1.0) #endif if (playeritem2[id]==HELM) set_user_hitzones(0,id,253) set_task(0.1, "weapon_controller", 10091, parm, 2) // Weapon Reincarnation isburning[id]=0 ultimateused[id]=false flame_count[id]=0 stunned[id]=false slowed[id]=false endround=false hostagesaver=0 hasblink[id]=false // Checks skills check_skills(id) check_fan(id) if (get_cvar_num("FT_reset_skills")){ if (resetskill[id]) { p_skills[id][1]=0 p_skills[id][2]=0 p_skills[id][3]=0 p_skills[id][4]=0 p_level[id] = 0 resetskill[id]=false displaylevel(id, 1) } } new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] if (skillsused < p_level[id]){ select_skill(id,0) } return PLUGIN_CONTINUE } public resetskills(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE if (get_cvar_num("FT_reset_skills")){ if(saychat==1) client_print(id,print_center,"Your skills will be reset next round") else console_print(id,"Your skills will be reset next round") resetskill[id]=true } else{ if(saychat==1) client_print(id,print_center,"This server has disabled that option") else console_print(id,"This server has disabled that option") resetskill[id]=false } return PLUGIN_HANDLED } #if !STEAM_POWERED public reset_position(parm[4]){ new origin[3] origin[0]=parm[1] origin[1]=parm[2] origin[2]=parm[3] set_user_origin(parm[0],origin) } #endif public weapon_controller( parm[2] ){ if (warcraft3==false) return PLUGIN_CONTINUE new id = parm[0] new origin[3] = 0 new weaponid = 0, weaponname[20] = 0, ammoname[20] = 0 new bool:reincarnate new iweapons[32] = 0, wpname[32] = 0, inum = 0 get_user_weapons(id,iweapons,inum) reincarnate = false // Save weapons of people who survived: otherwise the stripper will nab them... if( diedlastround[id] == false ){ // LIVED LAST ROUND reincarnate = false } // Equipement & Eligibility Check for Re-Incarnation if ( diedlastround[id]){ // DIED LAST ROUND new Float:randomnumber = random_float(0.0,1.0) if (p_skills[id][0] == 3 && p_skills[id][3] && randomnumber <= p_ankh[p_skills[id][3]-1]){ reincarnate = true //client_print(id,print_chat, "skill detected") } else if(give_items[id]){ reincarnate = true give_items[id]=false } else if (playeritem[id]==ANKH) reincarnate=true } // Equipement Re-Incarnation: Includes pistols. Also, living ppl need to be re-incarnated. if (reincarnate){ if (file_exists("sound/warcraft3/soundpack/reincarnation.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/soundpack/reincarnation.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) // Disarm and Isolate Player Before Re-Incarnation get_user_origin(id,origin) origin[2] -= 2000 set_user_origin(id,origin) for(new a=0;aMAXGLOW) iglow[id][1]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 255 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][1] ) // fade alpha message_end() // Restore Re-Incarnated Player to the map #if STEAM_POWERED set_user_origin(id,origin) #else new parm2[4] parm2[0]=id parm2[1]=origin[0] parm2[2]=origin[1] parm2[3]=origin[2] set_task(0.1,"reset_position",3,parm2,4) #endif }else{ hasdefuse[id]=false } item_functions(parm) return PLUGIN_HANDLED } #if !STEAM_POWERED public buy_weapons(parm[]){ new id=parm[0] new menunum=parm[1] new string[2] num_to_str(menunum,string,1) engclient_cmd(id,"buyequip") engclient_cmd(id,"menuselect",string) client_cmd(id,"slot10") return PLUGIN_CONTINUE } #endif public saveweapons(id){ armorondeath[id]=get_user_armor(id) for (new i=0; i<32; ++i){ // Equipment Reincarnation savedweapons[id][i]=0 } savednumber[id]=0 get_user_weapons(id,savedweapons[id],savednumber[id]) return PLUGIN_CONTINUE } public end_round(){ // Called at the end of a round if (warcraft3==false) return PLUGIN_CONTINUE endround=true buycalled=false new players[32] new numberofplayers get_players(players, numberofplayers) new y, id new parameter[1], i for (i = 0; i < numberofplayers; ++i){ parameter[0]=players[i] set_task(1.0,"getuserinput",5,parameter,1) } if(task_exists(899)) remove_task(899) for(y=0;y<33;++y) spawnPointsused[y]=false for (y = 0; y < numberofplayers; ++y){ id = players[y] if(task_exists(600+id)) // Removes walker (undead changing speed) remove_task(600+id) if (task_exists(id+90)) // Removes any current healing processes remove_task(id+90) if (task_exists(9000+id)) // Removes undead flashing process remove_task(9000+id) if (task_exists(50 + id)) // Remove any current cooldowns remove_task(50+id) if (task_exists(1000+id)){ // Remove any reset_maxspeeds occuring (could cause a person to move during freezetime remove_task(1000+id) new parm[2] parm[0]=id reset_maxspeed(parm) } if (task_exists(4500+id)){ // Resets godmode remove_task(4500+id) new parm[2] parm[0]=id reset_godmode(parm) } if(is_user_alive(id)) saveweapons(id) spawnedfromitem[id]=false playerhasspawned[id]=false if(playeritem2[id]!=CHAMELEON) changeskin(id,1) he[id]=0 carrioncount[id]=2 shadowcount[id]=2 flashg[id]=0 ismole[id]=false itemsrunning[id]=true } freezecalled = 0 pheonixexistsT=0 pheonixexistsCT=0 if (get_cvar_num("mp_savexp")) write_all() return PLUGIN_CONTINUE } public select_skill(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE if (p_skills[id][0] == 0){ if (saychat==1){ set_hudmessage(200, 100, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 2) show_hudmessage(id,"You must select a race before selecting skills!") } else client_cmd(id,"echo %s","You must select a race before selecting skills!") return PLUGIN_HANDLED } new message[256] new temp[128] new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] if (skillsused>=p_level[id]){ if (saychat==1){ set_hudmessage(200, 100, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 2) show_hudmessage(id,"You have already used up all your skill points!") } else client_cmd(id,"echo %s","You have already used up all your skill points!") return PLUGIN_HANDLED } if (is_user_bot(id)){ new randomskill while (skillsused < p_level[id]){ randomskill = random_num(1,3) if (p_skills[id][4]==0 && p_level[id]>=6) p_skills[id][4]=1 else if (p_skills[id][randomskill]!=3 && p_level[id]>2*p_skills[id][randomskill]){ ++p_skills[id][randomskill] } skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] } return PLUGIN_HANDLED } #if GERMAN format(message,255,"\yWaehle eine Faehigkeit:\w^n") #else format(message,255,"\ySelect Skill\w^n") #endif new skillcounter = 0 new skillcurrentrace[4][64] while (skillcounter < 4){ if (p_skills[id][0] == 1){ copy(skillcurrentrace[skillcounter],63,race1skill[skillcounter]) } else if (p_skills[id][0] == 2){ copy(skillcurrentrace[skillcounter],63,race2skill[skillcounter]) } else if (p_skills[id][0] == 3){ copy(skillcurrentrace[skillcounter],63,race3skill[skillcounter]) } else if (p_skills[id][0] == 4){ copy(skillcurrentrace[skillcounter],63,race4skill[skillcounter]) } else if (p_skills[id][0] == 5){ copy(skillcurrentrace[skillcounter],63,race5skill[skillcounter]) } else if (p_skills[id][0] == 6){ copy(skillcurrentrace[skillcounter],63,race6skill[skillcounter]) } else if (p_skills[id][0] == 7){ copy(skillcurrentrace[skillcounter],63,race7skill[skillcounter]) } else if (p_skills[id][0] == 8){ copy(skillcurrentrace[skillcounter],63,race8skill[skillcounter]) } ++skillcounter } skillcounter = 1 while (skillcounter< 4){ if (p_skills[id][skillcounter]!=3){ if (p_level[id]<=2*p_skills[id][skillcounter]){ format(temp,127,"\d") add(message,255,temp) } format(temp,127,"^n%d. %s %s %d\w",skillcounter,skillcurrentrace[skillcounter-1],"Level",p_skills[id][skillcounter]+1) add(message,255,temp) } ++skillcounter } if (p_skills[id][4]==0){ if (p_level[id]<=5){ format(temp,127,"\d") add(message,255,temp) } format(temp,127,"^n4. %s: %s\w","Ultimate",skillcurrentrace[3]) add(message,255,temp) } new keys = (1<<9) if (p_skills[id][1]!=3 && p_level[id]>2*p_skills[id][1] && skillsused2*p_skills[id][2] && skillsused2*p_skills[id][3] && skillsused=6 && skillsused2*p_skills[id][1] && skillsused2*p_skills[id][2] && skillsused2*p_skills[id][3] && skillsused=6 && skillsused100) set_user_health(id,100) new parm[1] parm[0]=id if (get_cvar_num("mp_savexp")){ playerxp[id] = 0 p_level[id] = 0 get_xp_from_file(id,0) } check_skills(id) if(!freezetime && !blinkdelayed[id] && !ultimateused[id]) icon_controller(id,ICON_SHOW) if (get_user_team(id)==0){ engclient_cmd(id, "chooseteam") return PLUGIN_HANDLED } else { new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3] if (skillsused < p_level[id]) select_skill(id,0) } if(p_skills[id][0] == 2 && p_skills[id][2] && get_user_health(id) <= 100){ // set_health set_user_health(id,p_devotion[p_skills[id][2]-1]) } return PLUGIN_HANDLED } public jumper(parm[2]){ new id = parm[0] client_cmd(id,"+jump;wait;-jump") parm[1]++ if(!endround && is_user_alive(id)) set_task(3.0,"jumper",2000+id,parm,1) return PLUGIN_CONTINUE } public do_damage(id,enemy, damage,deathby, victim_or_enemy, weapon, bodypart, userdead){ // one who is attacked, attacker ,damage // victim = 1 // enemy = 2 if (!warcraft3) return PLUGIN_CONTINUE new userkilled = 0 new string[128] switch (deathby){ case 1: format(string,127,"%s",race8skill[2]) // Carrion Beetles case 2: format(string,127,"%s",race4skill[1]) // Thorns Aura case 3: format(string,127,"%s",race4skill[2]) // Trueshot Aura case 4: format(string,127,"%s",race8skill[1]) // Spiked Carapace case 5: format(string,127,"%s",race5skill[1]) // Banish case 6: format(string,127,"%s",race3skill[0]) // Critical Strike case 7: format(string,127,"%s",race3skill[1]) // Critical Grenade case 8: format(string,127,"%s",itemname[2]) // Duh case 9: format(string,127,"%s",race7skill[2]) // Shadow Strike case 10: format(string,127,"%s",race7skill[1]) // Blink kill of someone w/big bad voodoo case 11: format(string,127,"%s",race3skill[3]) // Chain Lightning Kill case 12: format(string,127,"%s",race1skill[3]) // Suicide Bomber Kill case 13: format(string,127,"%s",race5skill[3]) // Flame Strike Kill case 14: format(string,127,"%s",race6skill[2]) // Serpant Ward Kill case 15: format(string,127,"%s",race8skill[3]) // Locust Kill case 16: format(string,127,"%s",itemname[5]) } // client_print(id,print_console,"[DEBUG] Damage received : %d, by %s",damage,string) // client_print(enemy,print_console,"[DEBUG] Damage done : %d, by %s",damage,string) if(userdead || !is_user_alive(id)){ return PLUGIN_HANDLED } if(hasblink[id] && (weapon ==10 || weapon==11 || weapon==12 || weapon==13 || weapon==15)) return PLUGIN_HANDLED if(hasgodmode[id] && !hasblink[enemy] && playeritem[enemy]!=IMMUNITY) return PLUGIN_HANDLED if (bodypart==1 && get_user_team(id)!=get_user_team(enemy)){ playerxp[enemy]+=HEADSHOT_BONUS if (get_cvar_num("FT_kill_objectives")) client_print(enemy,print_chat,"[%s] You are awarded %d XP for having a headshot", MOD, HEADSHOT_BONUS)//? displaylevel(enemy,1) } if (get_user_health(id) - damage<=0) userkilled = 1 if (get_user_health(id) - damage<=1024 && get_user_health(id)>500) userkilled = 1 if (userkilled) set_user_health(id, -1) else set_user_health(id, get_user_health(id) - damage) if (userkilled && get_user_team(id)!=get_user_team(enemy)) set_user_money(enemy,get_user_money(enemy)+300) if (userkilled){ diedlastround[id]=true } if (userkilled && id!=enemy){ switch (deathby){ case 1: format(string,127,"%s",race8skill[2]) // Carrion Beetles case 2: format(string,127,"%s",race4skill[1]) // Thorns Aura case 3: format(string,127,"%s",race4skill[2]) // Trueshot Aura case 4: format(string,127,"%s",race8skill[1]) // Spiked Carapace case 5: format(string,127,"%s",race5skill[1]) // Banish case 6: format(string,127,"%s",race3skill[0]) // Critical Strike case 7: format(string,127,"%s",race3skill[1]) // Critical Grenade case 8: format(string,127,"%s",itemname[2]) // Duh case 9: format(string,127,"%s",race7skill[2]) // Shadow Strike case 10: format(string,127,"%s",race7skill[1]) // Blink kill of someone w/big bad voodoo case 11: format(string,127,"%s",race3skill[3]) // Chain Lightning Kill case 12: format(string,127,"%s",race1skill[3]) // Suicide Bomber Kill case 13: format(string,127,"%s",race5skill[3]) // Flame Strike Kill case 14: format(string,127,"%s",race6skill[2]) // Serpant Ward Kill case 15: format(string,127,"%s",race8skill[3]) // Locust Kill case 16: format(string,127,"%s",itemname[5]) } } /* if (userkilled && id!=enemy){ new idname[32], enemyname[32] get_user_name(id,idname,31) get_user_name(enemy,enemyname,31) new players[32], numberofplayers, i, y get_players(players, numberofplayers) for (i = 0; i < numberofplayers; ++i){ y=players[i] console_print(y,"****** %s was killed by %s's %s",idname,enemyname,string) } } */ new name[32] get_user_name(id,name,31) if (userkilled && (victim_or_enemy == 2 || victim_or_enemy == 3)&& id !=enemy && userdead==0){ // due to thorns or spiked carapace or serpent wards or ultimates if (get_user_team(id)!=get_user_team(enemy)){ set_user_frags(enemy, get_user_frags(enemy)+1) set_user_frags(id, get_user_frags(id)+1) logKill(enemy,id, string) if(get_user_team(id)!=get_user_team(enemy)){ playerxp[enemy]+=xpgiven[p_level[id]] if (get_cvar_num("FT_kill_objectives")) client_print(enemy,print_chat,"[%s] You just gained %d XP for killing %s with %s",MOD,xpgiven[p_level[id]],name,string)//? displaylevel(id, 1) } } if(!deathmessageshown[id]){ deathmessageshown[id]=true message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(enemy) write_byte(id) write_byte(0) write_string(string) message_end() } return PLUGIN_HANDLED } // && get_user_team(id)!=get_user_team(enemy) if (userkilled && victim_or_enemy == 1 && id!=enemy && userdead==0){ // due to all aggressive auras new headshot if (bodypart==1) headshot=1 else headshot=0 new weaponname[32] switch (weapon) { case 1: weaponname = "p228" case 3: weaponname = "scout" case 4: weaponname = "grenade" case 5: weaponname = "xm1014" case 7: weaponname = "mac10" case 8: weaponname = "aug" case 10: weaponname = "elite" case 11: weaponname = "fiveseven" case 12: weaponname = "ump45" case 13: weaponname = "sg550" case 16: weaponname = "usp" case 17: weaponname = "glock18" case 18: weaponname = "awp" case 19: weaponname = "mp5navy" case 20: weaponname = "m249" case 21: weaponname = "m3" case 22: weaponname = "m4a1" case 23: weaponname = "tmp" case 24: weaponname = "g3sg1" case 26: weaponname = "deagle" case 27: weaponname = "sg552" case 28: weaponname = "ak47" case 29: weaponname = "knife" case 30: weaponname = "p90" } set_user_frags(id, get_user_frags(id)+1) set_user_frags(enemy, get_user_frags(enemy)+1) logKill(enemy,id, weaponname) if (!get_cvar_num("mp_weaponxpmodifier") && get_user_team(id)!=get_user_team(enemy)){ playerxp[enemy]+=xpgiven[p_level[id]] if (get_cvar_num("FT_kill_objectives")) client_print(enemy,print_chat,"[%s] You just gained %d XP for killing %s with %s",MOD,xpgiven[p_level[id]],name,string)//? } else if(get_user_team(id)!=get_user_team(enemy)){ playerxp[enemy]+=floatround(xpgiven[p_level[id]]*weaponxpmultiplier[weapon]) if (get_cvar_num("FT_kill_objectives")) client_print(enemy,print_chat,"[%s] You just gained %d XP for killing %s with %s",MOD,floatround(xpgiven[p_level[id]]*weaponxpmultiplier[weapon]),name,string)//? } if(!deathmessageshown[id]){ deathmessageshown[id]=true message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(enemy) write_byte(id) write_byte(headshot) write_string(weaponname) message_end() displaylevel(enemy, 1) } } return PLUGIN_CONTINUE } // Start Temporary Fix for czero (HE nades not working) public reset_he_origin(parm[]){ new enemy = parm[0] he_origin[enemy][0]=-1.234 he_origin[enemy][1]=-1.234 he_origin[enemy][2]=-1.234 // client_print(enemy,print_chat,"[DEBUG]After reset: x : %f, y: %f, z: %f",he_origin[enemy][0],he_origin[enemy][1],he_origin[enemy][2]) return PLUGIN_CONTINUE } // End Temporary Fix public damage_event(id){ if (warcraft3==false) return PLUGIN_CONTINUE new weapon = 0, bodypart = 0, enemy = get_user_attacker(id,weapon,bodypart) new damage // Temporary Fix: HE nade tossed in CZ (get_user_attacker is broken in CZ for nades) This is not 100% (obviously, look at the shitty code) if(weapon==0 && enemy==0 && is_running("czero")){ new Float:porigin[3], players[32], pnum=0, y=0 new Float:distance, testenemy Entvars_Get_Vector(id,EV_VEC_origin,porigin) get_players(players, pnum) for(y=0;y0 && is_user_alive(id)){ new idorigin[3] new enemyorigin[3] get_user_origin(id,idorigin) get_user_origin(enemy,enemyorigin) message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( TE_SPRITETRAIL ) write_coord(enemyorigin[0]) write_coord(enemyorigin[1]) write_coord(enemyorigin[2]) write_coord(idorigin[0]) write_coord(idorigin[1]) write_coord(idorigin[2]) write_short( shadow ) // short (sprite index) write_byte( 50 ) // byte (count) write_byte( 15 ) // byte (life in 0.1's) write_byte( 1 ) // byte (scale in 0.1's) write_byte( 2 ) // byte (velocity along vector in 10's) write_byte( 6 ) // byte (randomness of velocity in 10's) message_end() set_hudmessage(200, 100, 0, 0.2, 0.2, 0, 1.0, 5.0, 0.1, 0.2, 2) shadowcount[enemy]-- if (file_exists("sound/warcraft3/shadowstrikebirth1.wav")==1) emit_sound(id,CHAN_STATIC, "warcraft3/shadowstrikebirth1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) if (file_exists("sound/warcraft3/shadowstrikemissile1.wav")==1) emit_sound(enemy,CHAN_STATIC, "warcraft3/shadowstrikemissile1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) damage = 10 do_damage(id, enemy,damage,9,1, weapon, bodypart,0) message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 255 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][2] ) // fade alpha message_end() } } } if (p_skills[enemy][0] == 8){ // Carrion Beetle if(p_skills[enemy][3]){ new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_carrion[p_skills[enemy][3]-1]&& carrioncount[enemy]>0 && is_user_alive(id)){ new idorigin[3] new enemyorigin[3] get_user_origin(id,idorigin) get_user_origin(enemy,enemyorigin) message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( TE_SPRITETRAIL ) write_coord(enemyorigin[0]) write_coord(enemyorigin[1]) write_coord(enemyorigin[2]) write_coord(idorigin[0]) write_coord(idorigin[1]) write_coord(idorigin[2]) write_short( grunt ) // short (sprite index) write_byte( 15 ) // byte (count) write_byte( 15 ) // byte (life in 0.1's) write_byte( 1 ) // byte (scale in 0.1's) write_byte( 2 ) // byte (velocity along vector in 10's) write_byte( 6 ) // byte (randomness of velocity in 10's) message_end() set_hudmessage(200, 100, 0, 0.2, 0.2, 0, 1.0, 5.0, 0.1, 0.2, 2) carrioncount[enemy]-- if (file_exists("sound/warcraft3/carrionswarmlaunch1.wav")==1) emit_sound(enemy,CHAN_STATIC, "warcraft3/carrionswarmlaunch1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) if (file_exists("sound/warcraft3/carrionswarmdamage1.wav")==1) emit_sound(id,CHAN_STATIC, "warcraft3/carrionswarmdamage1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) damage = 10 do_damage(id, enemy,damage,1,1, weapon, bodypart,0) } } } if (p_skills[id][0] == 4){ // Elf if (p_skills[id][1]) { // Evasion new healthadjustment = 0 new bool:p_evadecurrentshot = p_evadenextshot[id] new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_evasion[p_skills[id][1]-1]){ p_evadenextshot[id]=true if (get_user_health(id)<=100){ healthadjustment = 1024 } } else{ p_evadenextshot[id]=false if (get_user_health(id)>100){ healthadjustment = -1024 } } if (p_evadecurrentshot){ damage = read_data(2) set_user_health(id, get_user_health(id) + damage + healthadjustment) if (iglow[id][2] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",7,parm,2) } iglow[id][2] += damage iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][3] = 0 if (iglow[id][2]>MAXGLOW) iglow[id][2]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 0 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][2] ) // fade alpha message_end() } else set_user_health(id, get_user_health(id) + healthadjustment) } if (p_skills[id][2]) { // Thorns Aura damage = read_data(2) damage = floatround(float(damage) * p_thorns[p_skills[id][2]-1]) do_damage(enemy, id,damage,2,2, weapon, bodypart,0) if (iglow[enemy][0] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",8,parm,2) } iglow[enemy][0] += 3*damage iglow[enemy][1] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][0]>MAXGLOW) iglow[enemy][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[enemy][0] ) // fade alpha message_end() } } if (p_skills[enemy][0] == 4 && p_skills[enemy][3]) { // Trueshot damage = read_data(2) damage = floatround(float(damage) * p_trueshot[p_skills[enemy][3]-1]) do_damage(id, enemy,damage,3,1, weapon, bodypart,0) if (iglow[id][0] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",14,parm,2) } iglow[id][0] += 2*damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } if (p_skills[id][0]==8){ if (p_skills[id][2]) { // Spiked Carapace damage = read_data(2) damage = floatround(float(damage) * p_spiked[p_skills[id][2]-1]) do_damage(enemy, id,damage,4,2, weapon, bodypart,0) if(get_user_armor(id)<101) set_user_armor(id,get_user_armor(id)+damage) if (iglow[enemy][0] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",8,parm,2) } iglow[enemy][0] += 3*damage iglow[enemy][1] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][0]>MAXGLOW) iglow[enemy][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[enemy][0] ) // fade alpha message_end() } } if (p_skills[enemy][1] && p_skills[enemy][0]==8){ new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_impale[p_skills[enemy][1]-1]){ if (file_exists("sound/warcraft3/impalehit.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/impalehit.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) message_begin(MSG_ONE,gmsgShake,{0,0,0},id) write_short(255<< 14 ) //ammount write_short(10 << 14) //lasts this long write_short(255<< 14) //frequency message_end() } } if (p_skills[enemy][0] == 6){ // Hex if (p_skills[enemy][2]) { new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_hex[p_skills[enemy][2]-1] && !skinchanged[id]){ changeskin(id,2) new parm[2] parm[0]=id parm[1]=0 jumper(parm) #if GERMAN client_print(id,print_chat,"[%s] Du bist nun ein Goomba und springst nur herum.",MOD) #endif #if FRENCH client_print(id,print_chat,"[%s] Vous vous etes transformer en goomba, en mourant",MOD) #endif #if ENGLISH client_print(id,print_chat,"[%s] You are now a goomba, just jumping along",MOD) #endif } } } if (p_skills[enemy][0] == 5){ // Banish if (p_skills[enemy][2]) { new Float:randomnumber = random_float(0.0,1.0) new num = p_skills[enemy][2]-1 // server_print("[%s] Banish Skill: %d, randomnumber: %f, Banish chance: %f",MOD, num, randomnumber,p_banish[num]) if (randomnumber <= p_banish[num]){ new parm[2] parm[0]=id if(randomnumber>9){ user_slap(id,0) user_slap(id,0) user_slap(id,0) do_damage(id, id,9,5,2, weapon, bodypart,0) } else{ user_slap(id,0) user_slap(id,0) user_slap(id,0) do_damage(id, id,7,5,2, weapon, bodypart,0) } if (file_exists("sound/warcraft3/banishcaster.wav")==1) emit_sound(enemy,CHAN_STATIC, "warcraft3/banishcaster.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) if (iglow[id][3] < 1){ parm[0] = id parm[1] = 0 set_task(0.01,"glow_change",11,parm,2) } iglow[id][3] += 100 iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 if (iglow[id][3]>MAXGLOW) iglow[id][3]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 255 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][3] ) // fade alpha message_end() } } if (p_skills[enemy][3]) { // Siphon Mana new money = get_user_money(id) money = floatround(p_mana[p_skills[enemy][3]-1] * money) set_user_money(enemy,get_user_money(enemy)+money,1) set_user_money(id,get_user_money(id)-money,1) if (iglow[enemy][1] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",9,parm,2) } iglow[enemy][1] += damage iglow[enemy][0] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][1]>MAXGLOW) iglow[enemy][1]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 120 ) // fade red write_byte( 120 ) // fade green write_byte( 120 ) // fade blue write_byte( iglow[enemy][1] ) // fade alpha message_end() } } if (p_skills[enemy][0] == 1){ // Vampiric Aura if (p_skills[enemy][1]) { damage = read_data(2) damage = floatround(float(damage) * p_vampiric[p_skills[enemy][1]-1]) set_user_health(enemy, get_user_health(enemy) + damage) if (get_user_health(enemy) > p_vampirichealth[p_skills[enemy][1]-1]+ (playeritem[enemy]==HEALTH ? HEALTHBONUS : 0) ){ set_user_health(enemy, p_vampirichealth[p_skills[enemy][1]-1]+ (playeritem[enemy]==HEALTH ? HEALTHBONUS : 0) ) } if (iglow[enemy][1] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",9,parm,2) } iglow[enemy][1] += damage iglow[enemy][0] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][1]>MAXGLOW) iglow[enemy][1]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 255 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[enemy][1] ) // fade alpha message_end() } } if (p_skills[enemy][0] == 2){ // Bash (DOESN'T WORK ON BOTS) if (p_skills[enemy][3]) { new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_bash[p_skills[enemy][3]-1] && get_user_maxspeed(id)>10 && !slowed[id]){ // Cannot bash if already bashed or frosted new normalspeed = floatround(get_user_maxspeed(id)) set_user_maxspeed(id,1.0) stunned[id]=true new parm[2] parm[0]=id parm[1]=normalspeed set_task(1.0,"reset_maxspeed",1000+id,parm,2) if (iglow[id][3] < 1){ parm[0] = id parm[1] = 0 set_task(0.01,"glow_change",11,parm,2) } iglow[id][3] += 100 iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 if (iglow[id][3]>MAXGLOW) iglow[id][3]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 255 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][3] ) // fade alpha message_end() } } } if (p_skills[enemy][0] == 3){ // Critical Strike if (p_skills[enemy][1]) { new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_critical[p_skills[enemy][1]-1]){ damage = read_data(2) damage = floatround(float(damage) * p_skills[enemy][1]) // Will be either 1, 2 or 3 times damage induced depending on skill level do_damage(id, enemy,damage,6,1, weapon, bodypart,0) if (iglow[id][0] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",12,parm,2) } iglow[id][0] += damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } } if (p_skills[enemy][2]){ // Critical Grenade new bool:allow=true if(playeritem2[enemy]==INFERNO){ if(get_cvar_num("FT_glove_orc_damage")) allow=true else allow=false } else allow=true if(no_he) allow=false if (weapon == 4 && allow){ damage = read_data(2) damage = floatround(float(damage) * p_grenade[p_skills[enemy][2]-1]) do_damage(id, enemy,damage,7,1, weapon, bodypart,0) new name[32] get_user_name(id,name,31) if (iglow[id][0] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",13,parm,2) } iglow[id][0] += damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } } } if (playeritem[enemy] == CLAWS){ // Claws of Attack damage = CLAWSOFATTACK do_damage(id, enemy,damage,8,1, weapon, bodypart,0) if (iglow[id][0] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",14,parm,2) } iglow[id][0] += 2*damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } else if (playeritem[enemy] == MASK){ // Mask of Death damage = read_data(2) damage = floatround(float(damage) * MASKPERCENT) set_user_health(enemy, get_user_health(enemy) + damage) if (get_user_health(enemy) > (p_skills[enemy][0]==2 ? p_devotion[p_skills[enemy][2]-1] : 100) ){ set_user_health(enemy, (p_skills[enemy][0]==2 ? p_devotion[p_skills[enemy][2]-1] : 100) ) } if (iglow[enemy][1] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",9,parm,2) } iglow[enemy][1] += damage iglow[enemy][0] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][1]>MAXGLOW) iglow[enemy][1]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 255 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[enemy][1] ) // fade alpha message_end() } else if (playeritem[enemy] == FROST){ // Frost (DOESN'T WORK ON BOTS) if (get_user_maxspeed(id)>10 && !slowed[id]){ // Cannot frost if bashed or frosted new normalspeed = floatround(get_user_maxspeed(id)) set_user_maxspeed(id,FROSTSPEED) // Replace "id" with "enemy" to test bash on self slowed[id]=true new parm[2] parm[0]=id // Replace "id" with "enemy" to test bash on self parm[1]=normalspeed set_task(1.0,"reset_maxspeed",1000+id,parm,2) if (iglow[id][3] < 1){ parm[0] = id parm[1] = 0 set_task(0.01,"glow_change",11,parm,2) } iglow[id][3] += 100 iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 if (iglow[id][3]>MAXGLOW) iglow[id][3]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 255 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][3] ) // fade alpha message_end() } } return PLUGIN_CONTINUE } public glow_change(parm[]){ new id = parm[0] if (p_skills[id][0]==2 && p_skills[id][1]){ // Don't glow if player is invisible iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 } else if (playeritem[id]==CLOAK){ // Don't glow if player is invisible iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 } else if (iglow[id][0] > 5){ set_user_rendering(id,kRenderFxGlowShell,iglow[id][0],0,0, kRenderNormal, 16) iglow[id][0] -= 5 set_task(0.2,"glow_change",15,parm,2) } else if (iglow[id][1] > 5){ set_user_rendering(id,kRenderFxGlowShell,0,iglow[id][1],0, kRenderNormal, 16) iglow[id][1] -= 5 set_task(0.2,"glow_change",16,parm,2) } else if (iglow[id][2] > 5){ set_user_rendering(id,kRenderFxGlowShell,0,0,iglow[id][2], kRenderNormal, 16) iglow[id][2] -= 5 set_task(0.2,"glow_change",17,parm,2) } else if (iglow[id][3] > 5){ set_user_rendering(id,kRenderFxGlowShell,iglow[id][3],iglow[id][3],iglow[id][3], kRenderNormal, 16) iglow[id][3] -= 5 set_task(0.2,"glow_change",18,parm,2) } else{ iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 set_user_rendering(id) } return PLUGIN_CONTINUE } public reset_maxspeed(parm[]){ new enemy = parm[0] new normalspeed = parm[1] stunned[enemy]=false slowed[enemy]=false set_user_maxspeed(enemy, float(normalspeed)) return PLUGIN_CONTINUE } #if STEAM_POWERED public zoomed2(id){ zoomed[id]=1 } public unzoomed(id){ zoomed[id]=0 } #endif public nadetimer(parm[2]){ new id = parm[0] set_hudmessage(0, 100, 0, 0.05, 0.65, 2, 0.02, 10.0, 0.01, 0.1, 2) if(playeritem2[id]!=INFERNO){ show_hudmessage(id,"") return PLUGIN_HANDLED } if(nadetime[parm[0]]!=0) show_hudmessage(id,"%d second(s) until your next grenade", nadetime[parm[0]]) nadetime[parm[0]] -= 1 if (!is_user_alive(id)) show_hudmessage(id,"Don't die next time and I'll give you another nade ya silly goose!") if (nadetime[parm[0]]!=-1 && is_user_alive(parm[0])) set_task(1.0,"nadetimer",9400+id,parm,2) if (nadetime[parm[0]]==-1){ giveheifnothas(parm) nadetime[id] = get_cvar_num("FT_glove_timer") return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public change_weapon(id) { if (warcraft3==false) return PLUGIN_CONTINUE // Gives person a grenade if they weren't just given one if (playeritem2[id]==INFERNO) { new wpnList[32] = 0 new number = 0 new foundNade = false get_user_weapons(id,wpnList,number) for (new i = 0;i < number && !foundNade;i++) { if (wpnList[i] == CSW_HEGRENADE) foundNade = true } new parm[2] parm[0]=id if(!justgivennade[id] && !foundNade) { justgivennade[id]=true nadetimer(parm) } } // End nade giving segment new clipamount = 0 new ammoamount = 0 new weaponnum = 0 weaponnum = (get_user_weapon(id,clipamount,ammoamount)) if (p_skills[id][0] == 2 && p_skills[id][1]){ // Invisibility if (weaponnum==29){ set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,p_invisibility[p_skills[id][1]-1]/2) knifeselected[id]=true } else{ set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,p_invisibility[p_skills[id][1]-1]) knifeselected[id]=false } } else if (playeritem[id]==CLOAK){ if (weaponnum==29){ set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,CLOAKINVISIBILITY/2) knifeselected[id]=true } else{ set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,CLOAKINVISIBILITY) knifeselected[id]=false } } else set_user_rendering(id) #if STEAM_POWERED if (!freezetime && !slowed[id] && !stunned[id]) { if (weaponnum==3){ //scout if (zoomed[id]==1) set_user_maxspeed(id,220.0) else set_user_maxspeed(id,260.0) //220 zoomed } else if (weaponnum==4){ //hegrenad set_user_maxspeed(id,260.0) } else if (weaponnum==5){ //xm1014 set_user_maxspeed(id,230.0) } else if (weaponnum==7){ //mac10 set_user_maxspeed(id,250.0) } else if (weaponnum==8){ //aug - bollup set_user_maxspeed(id,240.0) } else if (weaponnum==9){ //smokegrenade set_user_maxspeed(id,250.0) } else if (weaponnum==12){ //ump45 set_user_maxspeed(id,250.0) } else if (weaponnum==13){ //sg550 if (zoomed[id]==1) set_user_maxspeed(id,150.0) else set_user_maxspeed(id,210.0) //150 zoomed } else if (weaponnum==18){ //awp if (zoomed[id]==1) set_user_maxspeed(id,150.0) else set_user_maxspeed(id,210.0) //150 zoomed } else if (weaponnum==19){ //mp5 set_user_maxspeed(id,250.0) } else if (weaponnum==20){ //m249 set_user_maxspeed(id,220.0) } else if (weaponnum==21){ //auto-shotty (m3) set_user_maxspeed(id,240.0) } else if (weaponnum==14){ //galil set_user_maxspeed(id,240.0) } else if (weaponnum==15){ //famas set_user_maxspeed(id,240.0) } else if (weaponnum==22){ //M4A1 set_user_maxspeed(id,230.0) } else if (weaponnum==23){ //TMP set_user_maxspeed(id,250.0) } else if (weaponnum==24){ //G3SG1 if (zoomed[id]==1) set_user_maxspeed(id,150.0) else set_user_maxspeed(id,210.0) //150 zoomed } else if (weaponnum==25){ //flashbang set_user_maxspeed(id,250.0) } else if (weaponnum==27){ //sg552 set_user_maxspeed(id,235.0) } else if (weaponnum==28){ //AK47 set_user_maxspeed(id,221.0) } else if (weaponnum==30){ //P90 set_user_maxspeed(id,245.0) } else if (weaponnum==1){ //p228 set_user_maxspeed(id,250.0) } else if (weaponnum==10 ){ //elite set_user_maxspeed(id,250.0) } else if (weaponnum==11){ //fiveseven set_user_maxspeed(id,250.0) } else if (weaponnum==26){ //deagle set_user_maxspeed(id,250.0) } else if (weaponnum==16){ //usp set_user_maxspeed(id,250.0) } else if (weaponnum==17){ //glock set_user_maxspeed(id,250.0) } else if (weaponnum==29){ //knife set_user_maxspeed(id,250.0) } else if (weaponnum==6){ //BOMB set_user_maxspeed(id,250.0) } } #endif new parm[1] parm[0]=id unholyspeed(parm) return PLUGIN_CONTINUE } public freezetimedone() { if (warcraft3==false) return PLUGIN_CONTINUE freezetime = 0 new players[32],numberofplayers, id, i, parm[1] get_players(players, numberofplayers) for (i = 0; i < numberofplayers; ++i){ id=players[i] parm[0]=id #if STEAM_POWERED set_user_maxspeed(id,240.0) #endif set_task(0.1,"unholyspeed",19,parm,1) set_task(0.1,"unfreezespeed",21) if(get_cvar_num("FT_blinkstartdisabled")){ if(!(p_skills[id][0]==2 && p_skills[id][4])){ icon_controller(id,ICON_SHOW) ultimateused[id]=false } } else{ icon_controller(id,ICON_SHOW) ultimateused[id]=false } displaylevel(id,3) } return PLUGIN_CONTINUE } public set_buytime() buytime=false // New function called by freezetimedone - [AoL]Demandred public unfreezespeed() { if (warcraft3==false) return PLUGIN_CONTINUE new players[32] new numberofplayers get_players(players, numberofplayers) new i new id for (i = 0; i < numberofplayers; ++i){ id=players[i] change_weapon(id) } return PLUGIN_CONTINUE } // End new function - [AoL]Demandred public unholyspeed(parm[1]){ if (warcraft3==false) return PLUGIN_CONTINUE new id = parm[0] if (stunned[id]){ set_user_maxspeed(id,1.0) return PLUGIN_HANDLED } else if (slowed[id]){ set_user_maxspeed(id,FROSTSPEED) } #if STEAM_POWERED else if (get_user_maxspeed(id)>10 && p_skills[id][0] == 1 && p_skills[id][2] && !freezetime){ // Unholy Aura if (get_user_maxspeed(id)>10 && get_user_maxspeed(id)!=p_unholy[p_skills[id][2]-1]) set_user_maxspeed(id,(p_unholy[p_skills[id][2]-1])) } #else else if (get_user_maxspeed(id)>10 && p_skills[id][0] == 1 && p_skills[id][2] && !freezetime){ // Unholy Aura if (get_user_maxspeed(id)!=p_unholy[p_skills[id][2]-1]) set_user_maxspeed(id,(p_unholy[p_skills[id][2]-1])) } #endif else if (get_user_maxspeed(id)>10 && playeritem[id]==BOOTS && !freezetime){ // Boots of Speed if (get_user_maxspeed(id)!=BOOTSPEED) set_user_maxspeed(id,BOOTSPEED) } return PLUGIN_CONTINUE } public player_skills(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE new name[32], message[2048] #if STEAM_POWERED new temp[1024] #else new temp[256] #endif new skill1[64], skill2[64], skill3[64], skill4[64] new players[32] new numberofplayers get_players(players, numberofplayers) new i new playerid #if STEAM_POWERED add(message,2047,"") #endif for (i = 0; i < numberofplayers; ++i){ skill1="" skill2="" skill3="" skill4="" playerid=players[i] get_user_name(playerid,name,31) if (p_skills[playerid][0]==1){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race1skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race1skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race1skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race1skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==2){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race2skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race2skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race2skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race2skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[2],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[2],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==3){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race3skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race3skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race3skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race3skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[3],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[3],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==4){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race4skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race4skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race4skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race4skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[4],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[4],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==5){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race5skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race5skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race5skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race5skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[5],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[5],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==6){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race6skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race6skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race6skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race6skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[6],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[6],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==7){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race7skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race7skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race7skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race7skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[7],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[7],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==8){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race8skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race8skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race8skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race8skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[8],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[8],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==0){ #if STEAM_POWERED format(temp,1023,"%s - race not yet selected
",name) #else format(temp,255,"%s - race not yet selected^n",name) #endif } add(message,2047,temp) } if (saychat==1){ #if GERMAN show_motd(id,message,"Warcraft 3 Frozen Throne Spieler Faehigkeiten") #endif #if FRENCH show_motd(id,message,"Warcraft3 Frozen Throne jouer avec une Race") #endif #if ENGLISH show_motd(id,message,"Warcraft 3 Frozen Throne Player Skills") #endif return PLUGIN_CONTINUE } else{ console_print(id,message) } return PLUGIN_HANDLED } public items_info(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE new temp[1024], pos = 0 #if STEAM_POWERED new theforward[] = "
  • " new backward[] = "
  • " new lastone[] = "" pos += format(temp[pos], 1024-pos, "
      ") #else new theforward[] = "" new backward[] = "^n" new lastone[] = "" #endif #if GERMAN if(saychat==1){ pos += format(temp[pos], 1024-pos, "%sAnkh of Reincarnation: Wenn du stirbst, erhälst du in der nächsten Runde deine Ausrüstung zurück%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sBoots of Speed: Du rennst schneller als alle anderen%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sClaws of Attack +%s: Bei jedem Treffer werden dem Gegner zusätzliche %sHP abgezogen%s",theforward,CLAWSOFATTACK,CLAWSOFATTACK,backward) pos += format(temp[pos], 1024-pos, "%sCloak of Shadows: Macht dich teilweise unsichtbar, mit dem Messer in der Hand fast unsichtbar%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMask of Death: Du bekommst HP zurück wenn du dem Gegner Schaden zufügst %s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sNecklace of Immunity: Du bist immun gegen Ultimates",theforward,backward) pos += format(temp[pos], 1024-pos, "%sOrb of Frost: Macht den Gegner langsamer wenn du ihn triffst%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sPeriapt of Health: Du bekommst extra Gesundheit beim Start der Runde%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sTome of Experience: Du kaufst Erfahrungspunkte ein.%s%s",theforward,backward,lastone) show_motd(id,temp,"Einkaufsmenu Gegenstandsinfo") } else{ console_print(id,"---- Einkaufsmenu Gegenstandsinfo ----") console_print(id,"Ankh of Reincarnation: Wenn du stirbst, erhälst du in der nächsten Runde deine Ausrüstung zurück") console_print(id,"Boots of Speed: Du rennst schneller als alle anderen") console_print(id,"Claws of Attack +%s: Bei jedem Treffer werden dem Gegner zusätzliche %sHP abgezogen",CLAWSOFATTACK,CLAWSOFATTACK) console_print(id,"Cloak of Shadows: Macht dich teilweise unsichtbar, mit dem Messer in der Hand fast unsichtbar") console_print(id,"Mask of Death: Du bekommst HP zurück wenn du dem Gegner Schaden zufügst ") console_print(id,"Necklace of Immunity: Du bist immun gegen Ultimates") console_print(id,"Orb of Frost: Macht den Gegner langsamer wenn du ihn triffst") console_print(id,"Periapt of Health: Du bekommst extra Gesundheit beim Start der Runde") console_print(id,"Tome of Experience: Du kaufst Erfahrungspunkte ein.") console_print(id,"---- Einkaufsmenu Gegenstandsinfo ----") } #endif #if FRENCH if(saychat==1){ pos += format(temp[pos], 1024-pos, "%sReincarnation Equipements: Si vous mourez vous recupererez votre equipement le round suivant%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sBottes de vitesse : Vous permet de courir plus rapidement%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sForces d'attaque: Un additionnel de 6 HP sera enlevee de l'ennemi sur chaque coup porter%s",theforward,CLAWSOFATTACK,CLAWSOFATTACK,backward) pos += format(temp[pos], 1024-pos, "%sManteau des ombres : Vous rend partiellement invisible, l'invisibilite est augmente en tenant le couteau%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMasque de la mort : Vous recevrez des HP pour chaque coup porter sur l'ennemi%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sCollier d'immunite : Vous serez immuniser contre les ultimates ennemis et les super grenades",theforward,backward) pos += format(temp[pos], 1024-pos, "%sOrbe de Glace : Ralentit votre ennemi quand vous le toucher%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sAmulette de Vie : Recevez des HP supplementaire%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sTome d'experience : Achetez de l'experience, cela augmentera votre niveau%s%s",theforward,backward,lastone) show_motd(id,temp,"Shopmenu Item Information") } else{ console_print(id,"---- Shopmenu Item Information ----") console_print(id,"Reincarnation Equipements: Si vous mourez vous recupererez votre equipement le round suivant") console_print(id,"Bottes de vitesse : Vous permet de courir plus rapidement") console_print(id,"Forces d'attaque: Un additionnel de 6 HP sera enlevee de l'ennemi sur chaque coup porter") console_print(id,"Manteau des ombres : Vous rend partiellement invisible, l'invisibilite est augmente en tenant le couteau") console_print(id,"Masque de la mort : Vous recevrez des HP pour chaque coup porter sur l'ennemi") console_print(id,"Collier d'immunite : Vous serez immuniser contre les ultimates ennemis et les super grenades") console_print(id,"Orbe de Glace : Ralentit votre ennemi quand vous le toucher") console_print(id,"Amulette de Vie : Recevez des HP supplementaire") console_print(id,"Tome d'experience : Achetez de l'experience, cela augmentera votre niveau") console_print(id,"---- Shopmenu Item Information ----") } #endif #if ENGLISH if(saychat==1){ pos += format(temp[pos], 1024-pos, "%sAnkh of Reincarnation: If you die you will retrieve your equipment the following round%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sBoots of Speed: Allows you to run faster%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sClaws of Attack +%s: An additional %s hp will be removed from the enemy on every hit%s",theforward,CLAWSOFATTACK,CLAWSOFATTACK,backward) pos += format(temp[pos], 1024-pos, "%sCloak of Shadows: Makes you partially invisible, invisibility is increased when holding the knife%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMask of Death: You will receive health for every hit on the enemy%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sNecklace of Immunity: You will be immune enemy ultimates",theforward,backward) pos += format(temp[pos], 1024-pos, "%sOrb of Frost: Slows your enemy down when you hit him%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sPeriapt of Health: Receive extra health%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sTome of Experience: Automatically gain experience, the item is used on purchase%s%s",theforward,backward,lastone) show_motd(id,temp,"Shopmenu Item Information") } else{ console_print(id,"---- Shopmenu Item Information ----") console_print(id,"Ankh of Reincarnation: If you die you will retrieve your equipment the following round") console_print(id,"Boots of Speed: Allows you to run faster") console_print(id,"Claws of Attack +%s: An additional %s hp will be removed from the enemy on every hit",CLAWSOFATTACK,CLAWSOFATTACK) console_print(id,"Cloak of Shadows: Makes you partially invisible, invisibility is increased when holding the knife") console_print(id,"Mask of Death: You will receive health for every hit on the enemy") console_print(id,"Necklace of Immunity: You will be immune enemy ultimates") console_print(id,"Orb of Frost: Slows your enemy down when you hit him") console_print(id,"Periapt of Health: Receive extra health") console_print(id,"Tome of Experience: Automatically gain experience, the item is used on purchase") console_print(id,"---- Shopmenu Item Information ----") } #endif return PLUGIN_CONTINUE } public items_info2(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")) return PLUGIN_CONTINUE new temp[1024], pos = 0 #if STEAM_POWERED new theforward[] = "
    • " new backward[] = "
    • " new lastone[] = "" pos += format(temp[pos], 1024-pos, "
        ") #else new theforward[] = "" new backward[] = "^n" new lastone[] = "" #endif #if GERMAN if(saychat==1){ pos += format(temp[pos], 1024-pos, "%sScroll of Respawning: Wenn du stirbst wirst du wieder wiederbelebt%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMole Protectant: Schutz vor Schüssen von Mole's%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sAmulet of the Cat: Deine Schritte und Leitergeräusche sind nicht mehr zu hören%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sSock of the Feather: Geringere Anziehungskraft%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sHelm of Excellence: Macht dich immun gegen Kopfschuesse%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sFlaming Gloves of Warmth: Gibt dir alle %s Sekunden eine HE%s",theforward,get_cvar_num("FT_glove_timer"),backward) pos += format(temp[pos], 1024-pos, "%sRing of Regeneration +1: Gibt dir 1 HP alle 2 Sekunden. (Maximal 5 - schreib: rings um sie zu erhalten)%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sChameleon: Du siehst aus wie der Gegner!!%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMole: Du wirst bei Rundenbginn mit gegnerischem Skin zum anderen Startplatz teleportiert%s%s",theforward,backward,lastone) show_motd(id,temp,"Einkaufsmenu 2 Gegenstandsinfo") } else{ console_print(id,"---- Einkaufsmenu 2 Gegenstandsinfo ----") console_print(id,"Scroll of Respawning: Wenn du stirbst wirst du wieder wiederbelebt") console_print(id,"Mole Protectant: Schutz vor Schüssen von Mole's") console_print(id,"Amulet of the Cat: Deine Schritte und Leitergeräusche sind nicht mehr zu hören") console_print(id,"Sock of the Feather: Geringere Anziehungskraft") console_print(id,"Helm of Excellence: Macht dich immun gegen Kopfschuesse") console_print(id,"Flaming Gloves of Warmth: Gibt dir alle %s Sekunden eine HE",get_cvar_num("FT_glove_timer")) console_print(id,"Ring of Regeneration +1: Gibt dir 1 HP alle 2 Sekunden. (Maximal 5 - schreib: rings um sie zu erhalten)") console_print(id,"Chameleon: Du siehst aus wie der Gegner!!") console_print(id,"Mole: Du wirst bei Rundenbginn mit gegnerischem Skin zum anderen Startplatz teleportiert") console_print(id,"---- Einkaufsmenu 2 Gegenstandsinfo ----") } #endif #if FRENCH if(saychat==1){ pos += format(temp[pos], 1024-pos, "%sRespawn: Vous ressuscitez apres la mort%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sProtection Taupe: Vous serez protege contre une taupe pendant les 6 premieres secondes de chacun round%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sAmulet du Silence: Vous ne pouvez pas etre entendu quand vous, marchez, montez aux echelles%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sBottes Volante: La basse pesanteur, plus que les vampires nivellent la lévitation au niveau 3%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sAnti headshots: Immunise contre les headshots%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sGrenades à volonter: Donne une grenade toutes les %s secondes%s",theforward,get_cvar_num("FT_glove_timer"),backward) pos += format(temp[pos], 1024-pos, "%sAnneau de regeneration: Donne 1 de HP toutes les 2 secondes, vous pouvez en avoir 5 maximum%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sCameleon: Vous ressemblez a l'ennemi!!%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sTaupe: Teleportation en cameleon, en territoire ennemi au debut du round%s%s",theforward,backward,lastone) show_motd(id,temp,"Shopmenu2 Item Information") } else{ console_print(id,"---- Shopmenu2 Item Information ----") console_print(id,"Respawn: Vous ressuscitez apres la mort") console_print(id,"Protection Taupe: Vous serez protege contre une taupe pendant les 6 premieres secondes de chacun round") console_print(id,"Amulet du Silence: Vous ne pouvez pas etre entendu quand vous, marchez, montez aux echelles") console_print(id,"Bottes Volante: La basse pesanteur, plus que les vampires nivellent la lévitation au niveau 3") console_print(id,"Anti headshots: Immunise contre les headshots") console_print(id,"Grenades à volonter: Donné une grenade toutes les 10 secondes") console_print(id,"Anneau de regeneration: Donne 1 de HP toutes les 2 secondes, vous pouvez en avoir 5 maximum") console_print(id,"Cameleon: Vous ressemblez a l'ennemi!!") console_print(id,"Taupe: Teleportation en cameleon, en territoire ennemi au debut du round") console_print(id,"---- Shopmenu2 Item Information ----") } #endif #if ENGLISH if(saychat==1){ pos += format(temp[pos], 1024-pos, "%sScroll of Respawning: You will respawn after death%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMole Protectant: Protects you from moles (unless they hit you in the head)%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sAmulet of the Cat: You cannot be heard when running/going up ladders%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sSock of the Feather: Low gravity, more than Undead's level 3 levitation%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sHelm of Excellence: Immune to headshots%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sFlaming Gloves of Warmth: Given an HE grenade every %s seconds%s",theforward,get_cvar_num("FT_glove_timer"),backward) pos += format(temp[pos], 1024-pos, "%sRing of Regeneration +1: Gives 1 health every 2 seconds, you can have 5 max (type rings to receive 5)%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sChameleon: You look like the enemy!!%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMole: Teleported to enemy spawn at the start of the round, can only be used once%s%s",theforward,backward,lastone) show_motd(id,temp,"Shopmenu2 Item Information") } else{ console_print(id,"---- Shopmenu2 Item Information ----") console_print(id,"Scroll of Respawning: You will respawn after death") console_print(id,"Mole Protectant: Protects you from moles (unless they hit you in the head)") console_print(id,"Amulet of the Cat: You cannot be heard when running/going up ladders") console_print(id,"Sock of the Feather: Low gravity, more than Undead's level 3 levitation") console_print(id,"Helm of Excellence: Immune to headshots") console_print(id,"Flaming Gloves of Warmth: Given an HE grenade every %s seconds",get_cvar_num("FT_glove_timer")) console_print(id,"Ring of Regeneration +1: Gives 1 health every 2 seconds, you can have 5 max (type rings to receive 5)") console_print(id,"Chameleon: You look like the enemy!!") console_print(id,"Mole: Teleported to enemy spawn at the start of the round, can only be used once") console_print(id,"---- Shopmenu2 Item Information ----") } #endif return PLUGIN_CONTINUE } public war3_info(id, saychat){ if (warcraft3==false) return PLUGIN_CONTINUE new temp[2048] new pos = 0 #if STEAM_POWERED new thereturn[] = "
        " new thep[] = "

        " pos += format(temp[pos], 2048-pos, "") pos += format(temp[pos], 2048-pos, "This mod was developed by 4HM | Pimp Daddy, visit www.4hm.net (forums) for more details
        ") pos += format(temp[pos], 2048-pos, "Click here for the latest updates to Warcraft 3 Frozen Throne
        ") #if GERMAN pos += format(temp[pos], 2048-pos, "Klicke hier fuer mehr Informationen ... (Englische Version)") #endif #if FRENCH pos += format(temp[pos], 2048-pos, "Cliquer ici pour avoir plus d'information sur les races, etc..
        ") #endif #if ENGLISH pos += format(temp[pos], 2048-pos, "Click here for more information regarding the new races, etc..
        ") #endif #else new thereturn[] = "^n" new thep[] = "^n^n" #endif #if GERMAN if(saychat==1){ pos += format(temp[pos], 2048-pos, "Das binden von Tasten:%s",thep) pos += format(temp[pos], 2048-pos, "1) Die ` Taste drücken um in die Konsole zu gelangen (links von der 1)%s",thereturn) pos += format(temp[pos], 2048-pos, "2) Schreibe bind alt ultimate (so aktiviert die ALT Taste das Ultimate)%s",thereturn) pos += format(temp[pos], 2048-pos, "3) Schreibe bind - shopmenu (so aktiviert die - Taste das shopmenu)%s",thereturn) pos += format(temp[pos], 2048-pos, "4) Schreibe bind = shopmenu2 (so aktiviert die = Taste das shopmenu2)%s",thereturn) pos += format(temp[pos], 2048-pos, "5) Schreibe bind p ability (so aktiviert die p Taste die Fertigkeit einiger Rassen)%s",thep) pos += format(temp[pos], 2048-pos, "Es gibt noch einige Befehle mehr um das WC3-Plugin vollständig zu nutzen.%s",thep) pos += format(temp[pos], 2048-pos, "Spieler Befehle (einfach in den Chat schreiben mit oder ohne / ) :%s",thep) pos += format(temp[pos], 2048-pos, "say /selectskill - Fähigkeiten deiner Rasse auswählen %s",thereturn) pos += format(temp[pos], 2048-pos, "say /changerace - Rasse wechseln%s",thereturn) pos += format(temp[pos], 2048-pos, "say /playerskills - Rassen und Fähigkeiten Anzeige aller Spieler%s",thereturn) pos += format(temp[pos], 2048-pos, "say /skillsinfo - Erklärungen der Fähigkeiten deiner Rasse%s",thereturn) pos += format(temp[pos], 2048-pos, "say /itemsinfo - Erklärung der Gegenstände im shopmenu%s",thereturn) pos += format(temp[pos], 2048-pos, "say /itemsinfo2 - Erklärung der Gegenstände im shopmenu2%s",thereturn) pos += format(temp[pos], 2048-pos, "say /level - Zeigt deine Rasse, Fähigkeiten ,Level und Erfahrungspunkte an%s",thereturn) pos += format(temp[pos], 2048-pos, "say /war3vote - Das Plugin an- bzw. ausvoten%s",thereturn) pos += format(temp[pos], 2048-pos, "say /war3menu - Blendet das Warcraft3 Menu ein für weitere Einstellungen und Erklärungen%s",thereturn) pos += format(temp[pos], 2048-pos, "say /ability - Mit diesem Befehl können verfuegbare Schadens Wellen platziert werden%s",thereturn) pos += format(temp[pos], 2048-pos, "say /resetskills - Loescht dein Level und deine XP auf 0",thereturn) show_motd(id,temp,"Warcraft 3 Frozen Throne Hilfe") } else{ console_print(id,"---- Warcraft 3 Frozen Throne Hilfe Informationen ----") console_print(id,"Das binden von Tasten:") console_print(id,"1) Die ` Taste drücken um in die Konsole zu gelangen (links von der 1)") console_print(id,"2) Schreibe bind alt ultimate (so aktiviert die ALT Taste das Ultimate)") console_print(id,"3) Schreibe bind - shopmenu (so aktiviert die - Taste das shopmenu)") console_print(id,"4) Schreibe bind = shopmenu2 (so aktiviert die = Taste das shopmenu2)") console_print(id,"5) Schreibe bind p ability (so aktiviert die p Taste die Fertigkeit einiger Rassen)") console_print(id,"Es gibt noch einige Befehle mehr um das WC3-Plugin vollständig zu nutzen.") console_print(id,"Spieler Befehle (einfach in den Chat schreiben mit oder ohne / ) :") console_print(id,"say /selectskill - Fähigkeiten deiner Rasse auswählen ") console_print(id,"say /changerace - Rasse wechseln") console_print(id,"say /playerskills - Rassen und Fähigkeiten Anzeige aller Spieler") console_print(id,"say /skillsinfo - Erklärungen der Fähigkeiten deiner Rasse") console_print(id,"say /itemsinfo - Erklärung der Gegenstände im shopmenu") console_print(id,"say /itemsinfo2 - Erklärung der Gegenstände im shopmenu2") console_print(id,"say /level - Zeigt deine Rasse, Fähigkeiten ,Level und Erfahrungspunkte an") console_print(id,"say /war3vote - Vote to switch the plugin on and off") console_print(id,"say /war3menu - Blendet das Warcraft3 Menu ein für weitere Einstellungen und Erklärungen") console_print(id,"say /ability - if you have serpent wards it will plant them") console_print(id,"say /resetskills - resets your skills") console_print(id,"say /resetxp - Will reset your level and XP to 0") console_print(id,"---- Warcraft 3 Frozen Throne Hilfe Informationen ----") } return PLUGIN_CONTINUE #endif #if FRENCH if(saychat==1){ pos += format(temp[pos], 2048-pos, "Comment liez une touche de votre clavier:%s",thep) pos += format(temp[pos], 2048-pos, "1) Tapez ces commande dans votre console, pour binder vos touches%s",thereturn) pos += format(temp[pos], 2048-pos, "2) bind alt ultimate (maintenant le bouton alt activera votre ultimate)%s",thereturn) pos += format(temp[pos], 2048-pos, "3) bind - shopmenu (maintenant - bouton activera le shopmenu)%s",thereturn) pos += format(temp[pos], 2048-pos, "4) bind = shopmenu2 (maintenant = le bouton activera le 2eme shopmenu)%s",thereturn) pos += format(temp[pos], 2048-pos, "5) bind p ability (requises pour certaine abilitations)%s",thep) pos += format(temp[pos], 2048-pos, "Il y a quelques commandes que vous devez connaitre, afin de profiter pleinement du plugin:%s",thep) pos += format(temp[pos], 2048-pos, "say /selectskill - Vous permet de choisir vos pouvoirs avant le debut du prochains round%s",thereturn) pos += format(temp[pos], 2048-pos, "say /changerace - Vous permet de changer la race%s",thereturn) pos += format(temp[pos], 2048-pos, "say /playerskills - Pour connaitre la qualification des autres joueurs%s",thereturn) pos += format(temp[pos], 2048-pos, "say /skillsinfo - Pour voir les pouvoirs de la race que vous avez selectionner%s",thereturn) pos += format(temp[pos], 2048-pos, "say /itemsinfo - Infos sur les articles dans le shopmenu%s",thereturn) pos += format(temp[pos], 2048-pos, "say /itemsinfo2 - Infos sur les articles dans le shopmenu2%s",thereturn) pos += format(temp[pos], 2048-pos, "say /level - Pour connaitre votre niveau et qualifications%s",thereturn) pos += format(temp[pos], 2048-pos, "say /war3_vote - Pour voter et mettre le plugin on et off%s",thereturn) pos += format(temp[pos], 2048-pos, "say /war3menu - Pour avoir le menu de WarCraft3 FT%s",thereturn) pos += format(temp[pos], 2048-pos, "say /ability - Pour planter le serpent de la mort, si vous l'avez%s",thereturn) pos += format(temp[pos], 2048-pos, "say /resetskills 'pseudo' - Mettre vos pouvoirs a 0%s",thereturn) pos += format(temp[pos], 2048-pos, "say /resetxp 'pseudo' - Mettre votre niveau et XP a 0") show_motd(id,temp,"Warcraft 3 Frozen Throne Aide") } else{ console_print(id,"---- Warcraft 3 Frozen Throne Aides et Informations ----") console_print(id,"Comment liez une touche de votre clavier:") console_print(id,"1) Tapez ces commande dans votre console, pour binder vos touches") console_print(id,"2) bind alt ultimate (maintenant le bouton alt activera votre ultimate)") console_print(id,"3) bind - shopmenu (maintenant - bouton activera le shopmenu)") console_print(id,"4) bind = shopmenu2 (maintenant = le bouton activera le 2eme shopmenu)") console_print(id,"5) bind p ability (requises pour certaine abilitations)") console_print(id,"Il y a quelques commandes que vous devez connaitre, afin de profiter pleinement du plugin:") console_print(id,"say /selectskill - Vous permet de choisir vos pouvoirs avant le debut du prochains round") console_print(id,"say /changerace - Vous permet de changer la race") console_print(id,"say /playerskills - Pour connaitre la qualification des autres joueurs") console_print(id,"say /skillsinfo - Pour voir les pouvoirs de la race que vous avez selectionner") console_print(id,"say /itemsinfo - Infos sur les articles dans le shopmenu") console_print(id,"say /itemsinfo2 - Infos sur les articles dans le shopmenu2") console_print(id,"say /level - Pour connaitre votre niveau et qualifications") console_print(id,"say /war3_vote - Pour voter et mettre le plugin on et off") console_print(id,"say /war3menu - Pour avoir le menu de WarCraft3 FT") console_print(id,"say /ability - Pour planter le serpent de la mort, si vous l'avez") console_print(id,"say /resetskills 'pseudo' - Mettre vos pouvoirs a 0") console_print(id,"say /resetxp 'pseudo' - Mettre votre niveau et XP a 0") console_print(id,"---- Warcraft 3 Frozen Throne Aides et Informations ----") } return PLUGIN_CONTINUE #endif #if ENGLISH if(saychat==1){ pos += format(temp[pos], 2048-pos, "This is how you bind a key:%s",thep) pos += format(temp[pos], 2048-pos, "1) Type ` to get to the console (key to the left of number 1)%s",thereturn) pos += format(temp[pos], 2048-pos, "2) Type bind alt ultimate%s",thereturn) pos += format(temp[pos], 2048-pos, "3) Type bind - shopmenu %s",thereturn) pos += format(temp[pos], 2048-pos, "4) Type bind = shopmenu2%s",thereturn) pos += format(temp[pos], 2048-pos, "5) Type bind p ability%s",thep) pos += format(temp[pos], 2048-pos, "There are a few commands you need to know in order take full advantage of the plugin:%s",thep) pos += format(temp[pos], 2048-pos, "say /selectskill - Allows you to select skills before the start of the next round%s",thereturn) pos += format(temp[pos], 2048-pos, "say /changerace - Allows you to change your race%s",thereturn) pos += format(temp[pos], 2048-pos, "say /playerskills - Shows you what skills other players have chosen%s",thereturn) pos += format(temp[pos], 2048-pos, "say /skillsinfo - Shows you what each skill does for the race you have selected%s",thereturn) pos += format(temp[pos], 2048-pos, "say /itemsinfo - Shows you a list of items and what they do%s",thereturn) pos += format(temp[pos], 2048-pos, "say /itemsinfo2 - Shows you more items%s",thereturn) pos += format(temp[pos], 2048-pos, "say /level - Shows you what race, level and skills you have%s",thereturn) pos += format(temp[pos], 2048-pos, "say /war3vote - Vote to switch the plugin on and off%s",thereturn) pos += format(temp[pos], 2048-pos, "say /war3menu - Shows the War3 Frozen Throne Player menu%s",thereturn) pos += format(temp[pos], 2048-pos, "say /ability - if you have serpent wards it will plant them%s",thereturn) pos += format(temp[pos], 2048-pos, "say /resetskills - resets your skills%s",thereturn) pos += format(temp[pos], 2048-pos, "say /resetxp - Will reset your level and XP to 0") show_motd(id,temp,"Warcraft 3 Frozen Throne Help") } else{ console_print(id,"---- Warcraft 3 Frozen Throne Help Information ----") console_print(id,"This is how you bind a key:") console_print(id,"1) Type ` to get to the console (key to the left of number 1)") console_print(id,"2) Type bind alt ultimate") console_print(id,"3) Type bind - shopmenu") console_print(id,"4) Type bind = shopmenu2") console_print(id,"5) Type bind p ability") console_print(id,"There are a few commands you need to know in order take full advantage of the plugin:") console_print(id,"say /selectskill - Allows you to select skills before the start of the next round") console_print(id,"say /changerace - Allows you to change your race") console_print(id,"say /playerskills - Shows you what skills other players have chosen") console_print(id,"say /skillsinfo - Shows you what each skill does for the race you have selected") console_print(id,"say /itemsinfo - Shows you a list of items and what they do") console_print(id,"say /itemsinfo2 - Shows you more items") console_print(id,"say /level - Shows you what race, level and skills you have") console_print(id,"say /war3vote - Vote to switch the plugin on and off") console_print(id,"say /war3menu - Shows the War3 Frozen Throne Player menu") console_print(id,"say /ability - if you have serpent wards it will plant them") console_print(id,"say /resetskills - resets your skills") console_print(id,"say /resetxp - Will reset your level and XP to 0") console_print(id,"---- Warcraft 3 Frozen Throne Help Information ----") } return PLUGIN_CONTINUE #endif } public ultimate(id){ if (warcraft3==false) return PLUGIN_CONTINUE if (freezetime==1){ set_hudmessage(178, 14, 41, -1.0, -0.4, 1, 0.5, 1.7, 0.2, 0.2,5) show_hudmessage(id,"You may not use your ultimate during freezetime") return PLUGIN_HANDLED } if(u_delay){ set_hudmessage(178, 14, 41, -1.0, -0.4, 1, 0.5, 1.7, 0.2, 0.2,5) show_hudmessage(id,"Ultimates are disabled for the^nfirst %d seconds of the round",get_cvar_num("FT_ultimatedelay")) return PLUGIN_HANDLED } if (is_user_alive(id)){ if (p_skills[id][0]==8 && p_skills[id][4]==1 && !ultimateused[id]) // Locust Swarm calllocustfunction(id) if (p_skills[id][0]==1 && p_skills[id][4]==1){ if (get_cvar_num("FT_warn_suicide")){ if( suicideAttempt[id] ){ user_kill(id,1) }else{ new parm[1] parm[0]=id icon_controller(id,ICON_FLASH) suicideAttempt[id] = 1 set_hudmessage(178, 14, 41, -1.0, -0.4, 1, 0.5, 1.7, 0.2, 0.2,5) show_hudmessage(id,"Suicide Bomb Armed^nPress Again To Detonate") } } else user_kill(id,1) } if (p_skills[id][0]==6 && p_skills[id][4]==1 && !ultimateused[id]){ new parm[2] parm[0]=id parm[1]=3 godshealth[id]=get_user_health(id) set_user_health(id,get_user_health(id)+2048) hasgodmode[id]=true set_task(2.0,"reset_godmode",4500+id,parm,2) message_begin( MSG_ONE, 108, {0,0,0}, id ) // Bar (thanks to bad-at-this) write_byte( 2 ) // duration write_byte( 0 ) // duration message_end() if (file_exists("sound/warcraft3/divineshield.wav")==1) emit_sound(id,CHAN_STATIC, "warcraft3/divineshield.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) ultimateused[id]=true icon_controller(id,ICON_FLASH) } if (p_skills[id][0]==5 && p_skills[id][4]==1 && !ultimateused[id]){ //Flame Strike fire_flamethrower(id) flame_count[id]++ if(flame_count[id]>5){ ultimateused[id]=true icon_controller(id,ICON_HIDE) flame_count[id]=0 } } if (p_skills[id][0]==2 && p_skills[id][4]==1 && !ultimateused[id]){ // Teleport if(get_cvar_num("FT_blinkenabled")>0){ if(get_cvar_num("FT_blinkstartdisabled")>0){ if(blinkdelayed[id]){ set_hudmessage(178, 14, 41, -1.0, -0.4, 1, 0.5, 1.7, 0.2, 0.2,5) show_hudmessage(id,"Blink Disabled for the^nfirst %f seconds of the round",get_cvar_float("FT_blink_delay")) return PLUGIN_HANDLED } } /* native get_user_origin(index, origin[3], mode = 0); Gets origin from player. Modes: 0 - current position. 1 - position from eyes (weapon aiming). 2 - end position from player position. 3 - end position from eyes (hit point for weapon). <--- Hello hello 4 - position of last bullet hit (only CS). */ new oldLocation[3] new newLocation[3] new parm[3] parm[0] = id if (get_cvar_num("FT_blink_diziness")==2){ // This will cause Teleportation Blueness message_begin(MSG_ONE, gmsgFade, {0,0,0}, id) // use the magic #1 for "one client" write_short(1<<12) // fade lasts this long duration write_short(1<<8) // fade lasts this long hold time write_short(1<<0) // fade type IN write_byte(76) // fade red write_byte(163) // fade green write_byte(223) // fade blue write_byte(200) // fade alpha message_end() } get_user_origin(id, oldLocation) // Makes sure nearby enemy doesn't have immunity new teamname[32], players[32], numplayers, targetorigin[3], targetid get_user_team(id, teamname, 31) if(contain(teamname, "CT") != -1) get_players(players, numplayers, "ae", "TERRORIST") else get_players(players, numplayers, "ae", "CT") for (new i=0; i 0 ){ newLocation[0] -= 50 }else{ newLocation[0] += 50 } if( (newLocation[1] - oldLocation[1] ) > 0 ){ newLocation[1] -= 50 }else{ newLocation[1] += 50 } newLocation[2] += 40 savedNewLoc[id] = newLocation //client_print(id,print_chat,"arrive at: x:%i y:%i z%i",newLocation[0],newLocation[1],newLocation[2]) if (file_exists("sound/warcraft3/blinkarrival.wav")==1) emit_sound(id,CHAN_STATIC, "warcraft3/blinkarrival.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(id,CHAN_STATIC, "x/x_shoot1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) // blast circles message_begin( MSG_PAS, SVC_TEMPENTITY, oldLocation ) write_byte( TE_BEAMCYLINDER ) write_coord( oldLocation[0]) write_coord( oldLocation[1]) write_coord( oldLocation[2] + 10) write_coord( oldLocation[0]) write_coord( oldLocation[1]) write_coord( oldLocation[2] + 10 + TELEPORT_RADIUS) write_short( m_iSpriteTexture ) write_byte( 0 ) // startframe write_byte( 0 ) // framerate write_byte( 3 ) // life write_byte( 60 ) // width write_byte( 0 ) // noise write_byte( 255 ) // red write_byte( 255 ) // green write_byte( 255 ) // blue write_byte( 255 ) //brightness write_byte( 0 ) // speed message_end() // Stop bomb planting... client_cmd(id,"-use") if (get_cvar_num("FT_blink_protection")){ new mapname[32] get_mapname(mapname,32) if (equali(mapname,"as_oilrig")){ if (newLocation[0]>1530 && get_user_team(id)==TEAM_CT){ client_cmd(id,"kill") client_print(id,print_chat,"[%s] You have been slain for teleporting into a restricted area",MOD) return PLUGIN_HANDLED } } } // Test sending player, should work most of the time. set_user_origin( id, newLocation) new Float:PlayerOrigin[3] Entvars_Get_Vector(id, EV_VEC_origin, PlayerOrigin) if (get_cvar_num("FT_blink_protection")) set_task(1.5, "ceiling_check", 23+id, parm, 2) // Check if Blink laned you in a wall, if so, abort parm[1] = 1 set_task(0.1, "blink_controller", 10098, parm, 2) ultimateused[id]=true icon_controller(id,ICON_HIDE) if (file_exists("sound/warcraft3/blinkarrival.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/blinkarrival.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(id,CHAN_ITEM, "x/x_shoot1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) message_begin( MSG_PAS, SVC_TEMPENTITY, newLocation ) write_byte( TE_BEAMCYLINDER ) write_coord( newLocation[0]) write_coord( newLocation[1]) write_coord( newLocation[2] + 90) write_coord( newLocation[0]) write_coord( newLocation[1]) write_coord( newLocation[2] + 90 + TELEPORT_RADIUS) write_short( m_iSpriteTexture ) write_byte( 0 ) // startframe write_byte( 0 ) // framerate write_byte( 3 ) // life write_byte( 60 ) // width write_byte( 0 ) // noise write_byte( 255 ) // red write_byte( 255 ) // green write_byte( 255 ) // blue write_byte( 255 ) //brightness write_byte( 0 ) // speed message_end() } else { new i new j new tmp new numberofplayers new targetid new targetid2 new teamname[32] new distancebetween new distancebetween2 new origin[3] new targetorigin[3] new targetorigin2[3] get_user_team(id, teamname, 31) get_players(teleportid[id],numberofplayers,"ae",teamname) get_user_origin(id,origin) for (i=0; i 9) numberofplayers=9 else --numberofplayers // Remove self from list if (numberofplayers){ remove_task(666+id) teleportmenu[id]=true new menuparm[2] menuparm[0]=id menuparm[1]=numberofplayers telemenu(menuparm) } else{ set_hudmessage(178, 14, 41, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 5) show_hudmessage(id,"No valid targets found!") } } } if (!issearching[id] && p_skills[id][0]==3 && p_skills[id][4]==1 && !ultimateused[id]){ // Chain Lightning new parm[2] parm[0]=id parm[1]=ULTIMATESEARCHTIME lightsearchtarget(parm) } if (!issearching[id] && p_skills[id][0]==4 && p_skills[id][4]==1 && !ultimateused[id]){ // Entangle Roots new parm[2] parm[0]=id parm[1]=ULTIMATESEARCHTIME searchtarget(parm) } } return PLUGIN_HANDLED } public ceiling_check(parm[2]){ new id = parm[0] new mapname[32] new slay=0 new origin[3] get_user_origin(id,origin) new x = origin[0] new y = origin[1] new z = origin[2] get_mapname(mapname,32) new Float:porigin[3] Entvars_Get_Vector(id,EV_VEC_origin,porigin) //#define CONTENTS_SKY -6 if(PointContents(porigin)==-6) slay=1 if (equali(mapname,"de_dust")){ if(z>220) slay=1 } else if (equali(mapname,"awp_assault")){ if(z>520){ if((y>2400 && y<2600)) slay=1 } } else if (equali(mapname,"de_dust_cz")){ if(z>220) slay=1 } else if (equali(mapname,"de_aztec_cz")){ if(z>300) slay=1 } else if (equali(mapname,"cs_assault_upc")){ if(z>650) slay=1 } else if (equali(mapname,"de_aztec")){ if(z>300) slay=1 } else if (equali(mapname,"de_cbble")){ if (z>315){ if((x>-1320 && x<-1150) && (y>2600 && y<2900)) return else slay=1 } } else if (equali(mapname,"de_cbble_cz")){ if (z>315){ if((x>-1320 && x<-1150) && (y>2600 && y<2900)) return else slay=1 } } else if (equali(mapname,"cs_assault")){ if(z>700) slay=1 } else if (equali(mapname,"cs_militia")){ if(z>500) slay=1 } else if (equali(mapname,"cs_militia_cz")){ if(z>500) slay=1 } else if (equali(mapname,"cs_italy")){ if(z>-220){ if(y<-2128) slay=1 } if(z>250){ if ((x<-1000 && x>-1648) && (y>1900 && y<2050)) slay=1 if ((x<-1552 && x>-1648) && (y>1520 && y<2050)) slay=1 } } else if (equali(mapname,"de_dust2")){ if(z>270) slay=1 } else if (equali(mapname,"de_dust2_cz")){ if(z>270) slay=1 } else if (equali(mapname,"fy_dustworld")){ if(z>82) slay=1 } else if (equali(mapname,"fy_pool_day")){ if(z>190) slay=1 } else if (equali(mapname,"as_oilrig") ){ if (x>1530 && get_user_team(id)==TEAM_CT) slay=1 else if(x>1700) slay=1 } else slay=0 if(equali(mapname,"cs_mice_final")) slay=0 if(slay){ new name[32] get_user_name(id,name,31) client_print(id,print_chat,"[%s] You have been slayed for teleporting to a restricted area",MOD) set_user_health(id,-1) } } public blink_controller(parm[2]){ new id = parm[0] new newLocation[3] new curLocation[3] new oldLocation[3] new origin[3] if( parm[1] == 1){ // Teleport failure check and unsticker new coolparm[1] coolparm[0] = id newLocation = savedNewLoc[id] get_user_origin(id, curLocation, 0) //client_print(id,print_chat,"blinked to: x:%i y:%i z%i",newLocation[0],newLocation[1],newLocation[2]) //client_print(id,print_chat,"currently: x:%i y:%i z%i",curLocation[0],curLocation[1],curLocation[2]) if( newLocation[2] == curLocation[2] ){ // Teleportation Failure oldLocation = savedOldLoc[id] //client_print(id,print_chat,"sent back to: x:%i y:%i z%i",oldLocation[0],oldLocation[1],oldLocation[2]) //set_hudmessage(red, green, blue, Float:x=-1.0, Float:y=1.45, effects=0, Float:fxtime=6.0, Float:holdtime=12.0, Float:fadeintime=0.1, Float:fadeouttime=0.2,channel=4); set_hudmessage(255, 255, 10, -1.0, -0.4, 1, 0.5, get_cvar_float("FT_blink_cooldown"), 0.2, 0.2,5); show_hudmessage(id,"Teleport Failed^nBad Destination"); set_user_origin( id, oldLocation) parm[1] = 0 set_task(0.1, "blink_controller", 0, parm, 2) set_task(get_cvar_float("FT_blink_cooldown"),"cooldown",50 + id,coolparm,1) }else{ // Teleportation Success if not near player with immunity new teamname[32] new players[32] new numplayers new targetorigin[3] new targetid new bool:teleportSuccess = true get_user_origin(id, origin) get_user_team(id, teamname, 31) if( contain(teamname, "CT") != -1 ){ get_players(players, numplayers, "ae", "TERRORIST") }else{ get_players(players, numplayers, "ae", "CT") } for (new i=0; i10 && get_user_team(id)==get_user_team(targetid) && key!=9 && !ultimateused[id]){ ultimateused[id]=true icon_controller(id,ICON_HIDE) new waitparm[6] waitparm[0]=id waitparm[1]=targetid waitparm[5]=floatround(get_user_maxspeed(id)) set_user_maxspeed(id,1.0) stunned[id]=true telewaitstop(waitparm) new cooldownparm[1] cooldownparm[0]=id set_task(get_cvar_float("FT_teleport_cooldown"),"cooldown",500+id,cooldownparm,1) } return PLUGIN_HANDLED } public telemenu(parm[2]){ new id = parm[0] new numberofplayers = parm[1] new targetid new name[32] new origin[3] new targetorigin[3] new distancebetween new temp[64] new i new keys = (1<<9) new menu_body[512] #if GERMAN format(menu_body,511,"\yTeleportiere zu:\w^n") #endif #if FRENCH format(menu_body,511,"\yTeleportation:\w^n") #endif #if ENGLISH format(menu_body,511,"\yTeleport To:\w^n") #endif get_user_origin(id,origin) for (i = 0; i < numberofplayers; ++i){ targetid=teleportid[id][i] get_user_name(targetid,name,31) get_user_origin(targetid,targetorigin) distancebetween = get_distance(origin,targetorigin) if (is_user_alive(targetid)){ format(temp,63,"^n\w%d. %s (\y%dm\w)",i+1,name,distancebetween/40) keys |= (1<0) set_task(0.1,"teleportfadein",31,parm,3) return PLUGIN_CONTINUE } public unstickit(unstickparm[]){ new id=unstickparm[0] new origin[3] new targetorigin[3] origin[0]=unstickparm[1] origin[1]=unstickparm[2] origin[2]=unstickparm[3] new players[32] new numberofplayers get_players(players, numberofplayers) new i new playerid new bool:clear clear = true new distancebetween new tolerance = 100 for (i = 0; i < numberofplayers; ++i){ playerid=players[i] get_user_origin(playerid,targetorigin) distancebetween = get_distance(origin,targetorigin) if (distancebetween= 0){ counter -= 10 if (counter==0) emit_sound(id,CHAN_ITEM, "turret/tu_ping.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } --parm[1] if (parm[1]>0 && get_user_health(id)>0){ set_task(0.1,"searchtarget",21,parm,2) }else{ issearching[id]=false icon_controller(id,ICON_SHOW) } } return PLUGIN_CONTINUE } public walker(parm[2]){ // Prevents the sound of footsteps when walking at unholy aura lvl 3 new id = parm[0] #if !defined _amxmodx_included new velo[3] get_user_velocity(id, velo) new a,b if (velo[0]<0) a = velo[0] * -1 else a = velo[0] if (velo[1]<0) b = velo[1] * -1 else b = velo[1] new value = a + b if (p_skills[id][0] == 1 && p_skills[id][2] && !freezetime && !stunned[id] && !slowed[id]){ if (value<234) set_user_maxspeed(id, 275.0) else set_user_maxspeed(id, p_unholy[p_skills[id][2]-1]) } #endif // Other function calls to do every .1 seconds client_cmd(id,"cl_minmodels 0") if(get_cvar_num("FT_centerhud")) client_cmd(id,"hud_centerid 0") // End Other function calls if (!endround) set_task(0.1,"walker",600+id,parm,2) } public waitstop(parm[6]){ new id=parm[0] new origin[3] get_user_origin(id, origin) if (origin[0]==parm[2] && origin[1]==parm[3] && origin[2]==parm[4]){ new normalspeed = parm[5] new resetparm[2] resetparm[0]=id resetparm[1]=normalspeed set_task(float(parm[1]/10),"reset_maxspeed",1000+id,resetparm,2) new entangleparm[2] entangleparm[0]=parm[0] entangleparm[1]=parm[1] entangle(entangleparm) } else{ parm[2]=origin[0] parm[3]=origin[1] parm[4]=origin[2] set_task(0.1,"waitstop",29,parm,6) } return PLUGIN_CONTINUE } public entangle(parm[2]){ // Entangle Roots (DOESN'T WORK ON BOTS) new id=parm[0] new life=parm[1] new radius = 20 new counter = 0 new origin[3] new x1 new y1 new x2 new y2 get_user_origin(id,origin) if (file_exists("sound/warcraft3/entanglingrootstarget1.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/entanglingrootstarget1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(id,CHAN_ITEM, "weapons/electro5.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) new parm2[1] parm2[0]=id set_task(20.0,"cooldown",500+id,parm2,1) while (counter<=7){ if (counter==0 || counter==8) x1= -radius else if (counter==1 || counter==7) x1= -radius*100/141 else if (counter==2 || counter==6) x1= 0 else if (counter==3 || counter==5) x1= radius*100/141 else if (counter==4) x1= radius if (counter<=4) y1 = sqrt(radius*radius-x1*x1) else y1 = -sqrt(radius*radius-x1*x1) ++counter if (counter==0 || counter==8) x2= -radius else if (counter==1 || counter==7) x2= -radius*100/141 else if (counter==2 || counter==6) x2= 0 else if (counter==3 || counter==5) x2= radius*100/141 else if (counter==4) x2= radius if (counter<=4) y2 = sqrt(radius*radius-x2*x2) else y2 = -sqrt(radius*radius-x2*x2) new height=16+2*counter while (height > -40){ message_begin( MSG_BROADCAST, SVC_TEMPENTITY ) write_byte( 0 ) write_coord(origin[0]+x1) write_coord(origin[1]+y1) write_coord(origin[2]+height) write_coord(origin[0]+x2) write_coord(origin[1]+y2) write_coord(origin[2]+height+2) write_short(iBeam4) // model write_byte( 0 ) // start frame write_byte( 0 ) // framerate write_byte( life ) // life write_byte( 10 ) // width write_byte( 5 ) // noise write_byte( 10 ) // r, g, b write_byte( 108 ) // r, g, b write_byte( 23 ) // r, g, b write_byte( 255 ) // brightness write_byte( 0 ) // speed message_end() height -= 16 } } return PLUGIN_CONTINUE } public lightsearchtarget(parm[2]){ new id = parm[0] new enemy, body get_user_aiming(id,enemy,body) if ( 0= 0){ counter -= 10 if (counter==0) emit_sound(id,CHAN_ITEM, "turret/tu_ping.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } --parm[1] if (parm[1]>0 && get_user_health(id)>=0){ set_task(0.1,"lightsearchtarget",26,parm,2) }else{ issearching[id]=false icon_controller(id,ICON_SHOW) } } return PLUGIN_CONTINUE } public lightningnext(parm[4]){ // Chain Lightning new id=parm[0] new caster=parm[3] new origin[3] get_user_origin(id, origin) new players[32] new teamname[32] get_user_team(id, teamname, 31) new numberofplayers get_players(players, numberofplayers,"ae",teamname) new i new targetid = 0 new distancebetween = 0 new targetorigin[3] new damage = parm[1]*2/3 new linewidth = parm[2]*2/3 new closestdistance = 0 new closestid = 0 for (i = 0; i < numberofplayers; ++i){ targetid=players[i] if (get_user_team(id)==get_user_team(targetid) && is_user_alive(targetid) && is_user_alive(id)){ get_user_origin(targetid,targetorigin) distancebetween=get_distance(origin,targetorigin) if (distancebetween < LIGHTNING_RANGE && !lightninghit[targetid] && playeritem[targetid]!=IMMUNITY && !hasblink[targetid]){ if (distancebetween < closestdistance || closestid==0){ closestdistance = distancebetween closestid = targetid } } } } if (closestid){ lightningeffect(id,closestid,linewidth,damage,caster) parm[0]=targetid parm[1]=damage parm[2]=linewidth parm[3]=caster set_task(0.2,"lightningnext",27,parm,4) } else{ for (i = 0; i < numberofplayers; ++i){ targetid=players[i] lightninghit[targetid]=false } } return PLUGIN_CONTINUE } public lightningeffect(id,targetid,linewidth,damage,caster){ lightninghit[targetid]=true new parm[1] parm[0]=id icon_controller(id,ICON_HIDE) do_damage(targetid,caster, damage,11, 3, 0, 0, 0) if (get_user_armor(targetid)-damage<=0) set_user_armor(targetid,0) else set_user_armor(targetid,get_user_armor(targetid)-damage) message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BEAMENTS ); write_short(id); // start entity write_short(targetid); // entity write_short(lightning ); // model write_byte( 0 ); // starting frame write_byte( 15 ); // frame rate write_byte( 10 ); // life write_byte( linewidth ); // line width write_byte( 10 ); // noise amplitude write_byte( 255 ); // r, g, b write_byte( 255 ); // r, g, b write_byte( 255 ); // r, g, b write_byte( 255 ); // brightness write_byte( 0 ); // scroll speed message_end(); new origin[3] get_user_origin(targetid,origin) message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_ELIGHT ); write_short(targetid); // entity write_coord(origin[0]) // initial position write_coord(origin[1]) // initial position write_coord(origin[2]) // initial position write_coord(100) // radius write_byte( 255 ); // r, g, b write_byte( 255 ); // r, g, b write_byte( 255 ); // r, g, b write_byte( 10 ); // life write_coord(0) // decay rate message_end(); if (file_exists("sound/warcraft3/lightningbolt.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/lightningbolt.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(id,CHAN_ITEM, "weapons/gauss2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) return PLUGIN_CONTINUE } public cooldown(parm[1]){ new id = parm[0] if (get_cvar_num("sv_restrictultimate")==0){ ultimateused[id]=false icon_controller(id,ICON_SHOW) } return PLUGIN_CONTINUE } public cooldown2(parm[1]){ new id = parm[0] if(p_skills[id][0]==2 && p_skills[id][4]){ blinkdelayed[id]=false icon_controller(id,ICON_SHOW) } return PLUGIN_CONTINUE } public udelay_cooldown(){ u_delay = false new numplayers, players[32] get_players(players, numplayers) for (new i=0; i0) set_task(0.1,"apacheexplode",33,parm,2) return PLUGIN_CONTINUE } public blastcircles(parm[]){ new id = parm[0] if(get_user_team(id)==SPEC) return PLUGIN_CONTINUE new origin[3] get_user_origin(id,origin) // blast circles message_begin( MSG_PAS, SVC_TEMPENTITY, origin ) write_byte( TE_BEAMCYLINDER ) write_coord( origin[0]) write_coord( origin[1]) write_coord( origin[2] - 16) write_coord( origin[0]) write_coord( origin[1]) write_coord( origin[2] - 16 + get_cvar_num("FT_blast_radius")) write_short( m_iSpriteTexture ) write_byte( 0 ) // startframe write_byte( 0 ) // framerate write_byte( 6 ) // life write_byte( 16 ) // width write_byte( 0 ) // noise write_byte( 188 ) write_byte( 220 ) write_byte( 255 ) write_byte( 255 ) //brightness write_byte( 0 ) // speed message_end() message_begin( MSG_PAS, SVC_TEMPENTITY, origin ) write_byte( TE_BEAMCYLINDER ) write_coord( origin[0]) write_coord( origin[1]) write_coord( origin[2] - 16) write_coord( origin[0]) write_coord( origin[1]) write_coord( origin[2] - 16 + ( get_cvar_num("FT_blast_radius") / 2 )) write_short( m_iSpriteTexture ) write_byte( 0 ) // startframe write_byte( 0 ) // framerate write_byte( 6 ) // life write_byte( 16 ) // width write_byte( 0 ) // noise write_byte( 188 ) write_byte( 220 ) write_byte( 255 ) write_byte( 255 ) //brightness write_byte( 0 ) // speed message_end() return PLUGIN_CONTINUE } public sqrt(num) { new div = num new result = 1 while (div > result) { // end when div == result, or just below div = (div + result) / 2 // take mean value as new divisor result = num / div } return div } public client_connect(id){ client_cmd(id, "hud_centerid 0") g_specMode[id] = false p_skills[id][0] = 0 p_skills[id][1] = 0 p_skills[id][2] = 0 p_skills[id][3] = 0 p_skills[id][4] = 0 p_level[id] = 0 playerxp[id] = 0 playeritem[id] = 0 playeritem2[id] = 0 isburning[id] = 0 he[id] = 0 if (is_user_bot(id) && get_cvar_num("mp_savexp")){ playerxp[id]=xplevel[floatround(random_float(0.0,3.16)*random_float(0.0,3.16))] p_skills[id][0] = random_num(1,8) return PLUGIN_CONTINUE } return PLUGIN_CONTINUE } public client_disconnect(id){ g_specMode[id] = false isburning[id] = 0 he[id]=0 diedlastround[id]=false for (new i=0; i<32; ++i){ // Equipment Reincarnation savedweapons[id][i]=0 } if (get_cvar_num("mp_savexp") && !is_user_bot(id) && p_skills[id][0] && playerxp[id]) write_xp_to_file(id) return PLUGIN_CONTINUE } public skills_info(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE new message[2048] new title[64], temp[1024] new pos = 0 #if STEAM_POWERED new p[] = "

        " add(message,2047,"

        Click here for more detailed information regarding the new races, etc.. 

        ") #else new p[] = "^n^n" #endif #if GERMAN if (p_skills[id][0]==1){ format(title,63,"%s Skills",racename[1]) pos+= format(temp[pos],1024-pos,"Vampir Aura: Gibt dir (%d%%, %d%% oder %d%%) Gesundheit wieder zurück, wenn du Schaden verursachst.%s",floatround(p_vampiric[0]*100),floatround(p_vampiric[1]*100),floatround(p_vampiric[2]*100),p) pos+= format(temp[pos],1024-pos,"Unheilige Aura: Du bist schneller als alle anderen, egal mit welcher Waffe in der Hand (3 Stufen Schnelligkeit)%s",p) pos+= format(temp[pos],1024-pos,"Schweben: Du springst höher als alle anderen, und verlierst keine/wenig Gesundheit bei Stürzen (3 Stufen Schweben)%s",p) pos+= format(temp[pos],1024-pos,"Ultimate, Suicide Bomber: Wenn du stirbst explodierst du und reisst nahe Gegner mit in den Tod") } else if (p_skills[id][0]==2){ format(title,63,"%s Skills",racename[2]) pos+= format(temp[pos],1024-pos,"Unsichtbarkeit: Du wirst mit jeder Stufe transparenter (mit dem Messer in der Hand fast unsichtbar) (3 Stufen Unsichtbarkeit)%s",p) pos+= format(temp[pos],1024-pos,"Hingabe Aura: Gibt dir einen Gesundheitsbonus von (%d, %d oder %d) HP in 3 Stufen, am Start jeder Runde.%s",p_devotion[0],p_devotion[1],p_devotion[2],p) pos+= format(temp[pos],1024-pos,"Hieb Aura: Wenn du jemanden triffst hast du eine Chance von (%d%%, %d%% or %d%%), das er sich für 1 Sekunde nicht bewegen kann.%s",floatround(p_bash[0]*100),floatround(p_bash[1]*100),floatround(p_bash[2]*100),p) if (get_cvar_num("FT_blinkenabled")) pos+= format(temp[pos],1024-pos,"Ultimate, Blinzeln: Erlaubt es dir, dich dahin zu teleportieren, wohin du zielst.") else pos+= format(temp[pos],1024-pos,"Ultimate, Teleportieren: Die Möglichkeit sich zu teleportieren, in die Richtung deines Fadenkreuzes (alle 10 Sekunden möglich)") } else if (p_skills[id][0]==3){ format(title,63,"%s Skills",racename[3]) pos+= format(temp[pos],1024-pos,"Kritische Treffer: Gibt dir eine 15%% Chance den 2, 3, oder 4 fachen Schaden mit jedem Schuss zu machen.%s",p) pos+= format(temp[pos],1024-pos,"Kritische Granaten: Granaten machen (%d, %d oder %d) mal soviel Schaden.%s",floatround(p_critical[0]*100),floatround(p_grenade[0]),floatround(p_grenade[1]),floatround(p_grenade[2]),p) pos+= format(temp[pos],1024-pos,"Ausrüstungs-Reinkarnation: Gibt dir eine (%d%%, %d%% oder %d%%) Chance mit der kompletten Ausrüstung aus der letzten Runde zu starten, wenn du gefallen bist.%s",floatround(p_ankh[0]*100),floatround(p_ankh[1]*100),floatround(p_ankh[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Kettenblitz: Die Möglichkeit einen Blitz hervorzubringen, der von Gegner zu Gegner springt und diese verletzt (50HP). Mit jedem 'Sprung' verringert sich jedoch der Schaden um 1/3.") } else if (p_skills[id][0]==4){ format(title,63,"%s Skills",racename[4]) pos+= format(temp[pos],1024-pos,"Ausweichen: Gibt dir eine Chance von (%d%%, %d%% oder %d%%) einem Schuss auszuweichen.%s",floatround(p_evasion[0]*100),floatround(p_evasion[1]*100),floatround(p_evasion[2]*100),p) pos+= format(temp[pos],1024-pos,"Dornen Aura: Macht einen Schaden von (%d%%, %d%% oder %d%%), an denen die dir Schaden zugefügt haben.%s",floatround(p_thorns[0]*100),floatround(p_thorns[1]*100),floatround(p_thorns[2]*100),p) pos+= format(temp[pos],1024-pos,"Wahre Aura: Macht (%d%%, %d%% oder %d%%) extra Schaden mit jeder deiner Kugeln.%s",floatround(p_trueshot[0]*100),floatround(p_trueshot[1]*100),floatround(p_trueshot[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Wurzeln: Immobilisiert den getroffenen Gegner für 10 Sekunden. (er kann sich nicht bewegen!)") } else if (p_skills[id][0]==5){ format(title,63,"%s Skills",racename[5]) pos+= format(temp[pos],1024-pos,"Pheonix: Du hast die Chance von (%d%%, %d%% oder %d%%), den ersten Teamkollegen der stirbt wiederzubeleben.%s",floatround(p_pheonix[0]*100),floatround(p_pheonix[1]*100),floatround(p_pheonix[2]*100),p) pos+= format(temp[pos],1024-pos,"Verbannen: Mit einer Wahrscheinlichkeit von (%d%%, %d%% oder %d%%) slapst du deinen Gegner.%s",floatround(p_banish[0]*100),floatround(p_banish[1]*100),floatround(p_banish[2]*100),p) pos+= format(temp[pos],1024-pos,"Siphon Mana: Stehle deinem Gegner (%d%%, %d%% oder %d%%) Geld%s",floatround(p_mana[0]*100),floatround(p_mana[1]*100),floatround(p_mana[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Flammenwerfer: Du erhälst einen Flammenwerfer.") } else if (p_skills[id][0]==6){ format(title,63,"%s Skills",racename[6]) pos+= format(temp[pos],1024-pos,"Heilende Welle: Alle (%d%%, %d%% oder %d%%) Sekunden erhalten du und den dir am nächsten stehenden Teamkamaraden in der Nähe 1 HP.%s",floatround(p_heal[0]),floatround(p_heal[1]),floatround(p_heal[2]),p) pos+= format(temp[pos],1024-pos,"Hexen: Eine (%d%%, %d%% oder %d%%) Chance deinen Gegner in einen großen Goober zu verwandeln.%s",floatround(p_hex[0]*100),floatround(p_hex[1]*100),floatround(p_hex[2]*100),p) pos+= format(temp[pos],1024-pos,"Schadens Welle: Du hast die Mögleichkeit (%d, %d oder %d) magische Pfähle aufzustellen, die dem Gegner in der Nähe Schaden zufügen.%s",p_serpent[0],p_serpent[1],p_serpent[2],p) pos+= format(temp[pos],1024-pos,"Ultimate, Großer Böser Zauber: Du bist für 2 Sekunden unverwundbar!") } else if (p_skills[id][0]==7){ format(title,63,"%s Skills",racename[7]) pos+= format(temp[pos],1024-pos,"Fan Of Knives: Du hast eine (%d%%, %d%% oder %d%%) Chance ein Spion nächste Runde zu sein. (Mole-Start am gegnerischen Startplatz)%s",floatround(p_fan[0]*100),floatround(p_fan[1]*100),floatround(p_fan[2]*100),p) pos+= format(temp[pos],1024-pos,"Blinzeln: Mit einer (%d%%, %d%% oder %d%%) Chance werden die Skills der Gegner in der Nähe unbrauchbar sein. (alle Skills!)%s",floatround(p_blink[0]*100),floatround(p_blink[1]*100),floatround(p_blink[2]*100),p) pos+= format(temp[pos],1024-pos,"Schattenschlag: Du hast die Chance von (%d%%, %d%% oder %d%%), einen vergifteten Pfeil auf deinen Gegner zu schiessen. (3 Pfeile max.)%s",floatround(p_shadow[0]*100),floatround(p_shadow[1]*100),floatround(p_shadow[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Rache: Du wirst im Falle deinens Ablebens mit 50 HP wiederbelebt !") } else if (p_skills[id][0]==8){ format(title,63,"%s Skills",racename[8]) pos+= format(temp[pos],1024-pos,"Imaple(Verwirren): Ruckelt getroffene Gegner (Ihr Schirm wackelt)%s",p) pos+= format(temp[pos],1024-pos,"Spiked Carapace: Macht (%d%%, %d%% oder %d%%) Schaden am Gegner, wenn er dir schadet und gibt dir Armor zurück.%s",floatround(p_spiked[0]*100),floatround(p_spiked[1]*100),floatround(p_spiked[2]*100),p) pos+= format(temp[pos],1024-pos,"Aas Käfer: Du hast eine (%d%%, %d%% oder %d%%) Chance das deine Käfer dem Gegner Schaden zufügen. %s",floatround(p_carrion[0]*100),floatround(p_carrion[1]*100),floatround(p_carrion[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Heuschreckenschwarm: Du lässt einen Schwarm von Heuschracken auf den Gegner los") } else{ client_cmd(id,"echo %s","You must select a race before selecting skills!") return PLUGIN_HANDLED } #endif #if FRENCH if (p_skills[id][0]==1){ format(title,63,"%s Skills",racename[1]) pos+= format(temp[pos],1024-pos,"Vampire: Vous volez (%d%%, %d%% ou %d%%) de HP, suivant les degats que vous faites sur votre adversaire%s",floatround(p_vampiric[0]*100),floatround(p_vampiric[1]*100),floatround(p_vampiric[2]*100),p) pos+= format(temp[pos],1024-pos,"Vitesse: Vous permet de courir a la meme vitesse, quelque soit l'arme que vous portez%s",p) pos+= format(temp[pos],1024-pos,"Levitation: Vous permet de sauter plus haut en reduisant votre graviter%s",p) pos+= format(temp[pos],1024-pos,"Ultimate, Kamikase: Quand vous mourez, votre corps s'autodetruit, et tueras tous vos adversaire, si ils sont tres pres de vous") } else if (p_skills[id][0]==2){ format(title,63,"%s Skills",racename[2]) pos+= format(temp[pos],1024-pos,"Invisibiliter: Vous rend partiellement invisibles%s",p) pos+= format(temp[pos],1024-pos,"Vie HP: Vous donne (%d, %d ou %d) de vie suplementaire au debut du round%s",p_devotion[0],p_devotion[1],p_devotion[2],p) pos+= format(temp[pos],1024-pos,"Stop Ennemi: Quand vous tirez sur quelqu'un vous avez (%d%%, %d%% or %d%%) de chance de l'immobiliser pendant 1 seconde%s",floatround(p_bash[0]*100),floatround(p_bash[1]*100),floatround(p_bash[2]*100),p) if (get_cvar_num("FT_blinkenabled")) pos+= format(temp[pos],1024-pos,"Ultimate, Telepatie: Vous permet de vous teleporter,la ou vous visez (evitez les plafonds).") else pos+= format(temp[pos],1024-pos,"Ultimate, Teleportation: Vous permet de teleporter un coequipier (toutes les 10 secondes)") } else if (p_skills[id][0]==3){ format(title,63,"%s Skills",racename[3]) pos+= format(temp[pos],1024-pos,"Dommage HP: Vous donne %d%% de chance de faire (2, 3, or 4) fois plus de dommage qu'en temps normal%s",floatround(p_critical[0]*100),p) pos+= format(temp[pos],1024-pos,"Super Grenade: Les Grenades feront TOUJOURS (%d, %d or %d) fois plus de dommage qu'en temps normal%s",floatround(p_grenade[0]),floatround(p_grenade[1]),floatround(p_grenade[2]),p) pos+= format(temp[pos],1024-pos,"Reincarnation Armement: Vous donne (%d%%, %d%% or %d%%) de chance de recuperer votre equipement au prochain roud, si vous mourez%s",floatround(p_ankh[0]*100),floatround(p_ankh[1]*100),floatround(p_ankh[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Chaine d'eclair: Lance une foudre qui passe d'un ennemis a un autre, si ils sont regroupes") } else if (p_skills[id][0]==4){ format(title,63,"%s Skills",racename[4]) pos+= format(temp[pos],1024-pos,"Exquiver Tir: Vous donne (%d%%, %d%% ou %d%%) de chance d'exquiver certains tirs%s",floatround(p_evasion[0]*100),floatround(p_evasion[1]*100),floatround(p_evasion[2]*100),p) pos+= format(temp[pos],1024-pos,"Report HP Ennemi: Donne a votre ennemi (%d%%, %d%% ou %d%%) de dommages qu'il vous fait subir en vous attaquant%s",floatround(p_thorns[0]*100),floatround(p_thorns[1]*100),floatround(p_thorns[2]*100),p) pos+= format(temp[pos],1024-pos,"Mega HP Ennemi: Vous permets de faire (%d%%, %d%% ou %d%%) de dommages supplementaires sur vos ennemis%s",floatround(p_trueshot[0]*100),floatround(p_trueshot[1]*100),floatround(p_trueshot[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Ligoter ennemis: Vous permet de ligoter un ennemi grace a une plante grimpante et ainsi l'immobiliser pendant 10 secondes") } else if (p_skills[id][0]==5){ format(title,63,"%s Skills",racename[5]) pos+= format(temp[pos],1024-pos,"Ranimer Coequipiers: Vous avez (%d%%, %d%% ou %d%%) de chance de reanimer un coequipier%s",floatround(p_pheonix[0]*100),floatround(p_pheonix[1]*100),floatround(p_pheonix[2]*100),p) pos+= format(temp[pos],1024-pos,"Slap Ennemi: Vous avez (%d%%, %d%% ou %d%%) de chance de donner une baffe a votre ennemi%s",floatround(p_banish[0]*100),floatround(p_banish[1]*100),floatround(p_banish[2]*100),p) pos+= format(temp[pos],1024-pos,"Pique Pocket : Voler (%d%%, %d%% ou %d%%) d'argent a votre ennemi%s",floatround(p_mana[0]*100),floatround(p_mana[1]*100),floatround(p_mana[2]*100),p) pos+= format(temp[pos],1024-pos,"ltimate, Lance Flamme: Vous recevez un lance-flammes (1 utilisations toutes les 20 secondes)") } else if (p_skills[id][0]==6){ format(title,63,"%s Skills",racename[6]) pos+= format(temp[pos],1024-pos,"Guerir Coequipiers: Chaque (%d%%, %d%% ou %d%%) secondes vous et vos coequipiers qui seront pres de vous, recupereront des HP%s",floatround(p_heal[0]),floatround(p_heal[1]),floatround(p_heal[2]),p) pos+= format(temp[pos],1024-pos,"Sortilege: Vous avez (%d%%, %d%% ou %d%%) de chance de tourner votre ennemi dans un grand goober%s",floatround(p_hex[0]*100),floatround(p_hex[1]*100),floatround(p_hex[2]*100),p) pos+= format(temp[pos],1024-pos,"Dommage Unites Ennemies: Vous recevez (%d, %d ou %d) les Dommage des unités ennemies, pour cela

        (bind votretouche ability) ou (say ability) pour planter le serpent%s",p_serpent[0],p_serpent[1],p_serpent[2],p,p) pos+= format(temp[pos],1024-pos,"Ultimate, Invincibilite: Vous devenez invincible pendant 2 secondes") } else if (p_skills[id][0]==7){ format(title,63,"%s Skills",racename[7]) pos+= format(temp[pos],1024-pos,"Taupes: Vous avez (%d%%, %d%% ou %d%%) de chance de devenir une taupe%s",floatround(p_fan[0]*100),floatround(p_fan[1]*100),floatround(p_fan[2]*100),p) pos+= format(temp[pos],1024-pos,"Pouvoirs H-S : Met hors service TOUTES les pouvoirs ennemis (%d%%, %d%% ou %d%%)%s",floatround(p_blink[0]*100),floatround(p_blink[1]*100),floatround(p_blink[2]*100),p) pos+= format(temp[pos],1024-pos,"Poignard Empoisonner: Vous avez (%d%%, %d%% ou %d%%) de chance de lancer un poignard empoisonne a l'ennemi%s",floatround(p_shadow[0]*100),floatround(p_shadow[1]*100),floatround(p_shadow[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Ressusciter: Vous permet de resusciter une fois avec 50% d'armure") } else if (p_skills[id][0]==8){ format(title,63,"%s Skills",racename[8]) pos+= format(temp[pos],1024-pos,"Empaler: Deformer la vison de l'ennemi%s",p) pos+= format(temp[pos],1024-pos,"Renvoi Dommages: Permet (%d%%, %d%% or %d%%) de renvoyer les dommages recu, sur le joueur qui vous attaque, et vous gagnez de l'armure%s",floatround(p_spiked[0]*100),floatround(p_spiked[1]*100),floatround(p_spiked[2]*100),p) pos+= format(temp[pos],1024-pos,"Scarabées Charognard: Vous avez (%d%%, %d%% or %d%%) de chance que vos scarabees attaquant l'ennemi quand vous le viser%s",floatround(p_carrion[0]*100),floatround(p_carrion[1]*100),floatround(p_carrion[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Essaim de sauterelles: Envoyer un essaim de sauterelles attaquer l'ennemi") } else{ client_cmd(id,"echo %s","Vous devez choisir une race pour connaitre ces pouvoirs!") return PLUGIN_HANDLED } #endif #if ENGLISH if (p_skills[id][0]==1){ format(title,63,"%s Skills",racename[1]) pos+= format(temp[pos],1024-pos,"Vampiric Aura: Gives you (%d%%, %d%% or %d%%) of the damage you do in attack back as health%s",floatround(p_vampiric[0]*100),floatround(p_vampiric[1]*100),floatround(p_vampiric[2]*100),p) pos+= format(temp[pos],1024-pos,"Unholy Aura: Gives you a speed boost, also all weapons make you go at the same speed%s",p) pos+= format(temp[pos],1024-pos,"Levitation: Allows you to jump higher by reducing your gravity%s",p) pos+= format(temp[pos],1024-pos,"Ultimate, Suicide Bomber: When you die you will explode killing nearby enemies and regenerate") } else if (p_skills[id][0]==2){ format(title,63,"%s Skills",racename[2]) pos+= format(temp[pos],1024-pos,"Invisibility: Makes you partially invisible, you will be harder to see%s",p) pos+= format(temp[pos],1024-pos,"Devotion Aura: Gives you (%d, %d or %d) health at the start of the round.%s",p_devotion[0],p_devotion[1],p_devotion[2],p) pos+= format(temp[pos],1024-pos,"Bash: When you shoot someone you have a (%d%%, %d%% or %d%%) chance of rendering them immobile for 1 second%s",floatround(p_bash[0]*100),floatround(p_bash[1]*100),floatround(p_bash[2]*100),p) if (get_cvar_num("FT_blinkenabled")) pos+= format(temp[pos],1024-pos,"Ultimate, Blink: Allows you to teleport to where you aim (avoid ceilings).") else pos+= format(temp[pos],1024-pos,"Ultimate, Teleport: Allows you to teleport to a team mate (10 seconds cooldown)") } else if (p_skills[id][0]==3){ format(title,63,"%s Skills",racename[3]) pos+= format(temp[pos],1024-pos,"Critical Strike: Gives you a %d%% chance of doing (2, 3, or 4) times normal damage%s",floatround(p_critical[0]*100),p) pos+= format(temp[pos],1024-pos,"Critical Grenade: Grenades will ALWAYS do (%d, %d or %d) times normal damage%s",floatround(p_grenade[0]),floatround(p_grenade[1]),floatround(p_grenade[2]),p) pos+= format(temp[pos],1024-pos,"Equipment Reincarnation: Gives you a (%d%%, %d%% or %d%%) chance of regaining your equipment on death%s",floatround(p_ankh[0]*100),floatround(p_ankh[1]*100),floatround(p_ankh[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Chain Lightning: Discharges a bolt of lightning that jumps to all nearby enemies") } else if (p_skills[id][0]==4){ format(title,63,"%s Skills",racename[4]) pos+= format(temp[pos],1024-pos,"Evasion: Gives you a (%d%%, %d%% or %d%%) chance of evading each shot%s",floatround(p_evasion[0]*100),floatround(p_evasion[1]*100),floatround(p_evasion[2]*100),p) pos+= format(temp[pos],1024-pos,"Thorns Aura: Does (%d%%, %d%% or %d%%) mirror damage to the person who shot you%s",floatround(p_thorns[0]*100),floatround(p_thorns[1]*100),floatround(p_thorns[2]*100),p) pos+= format(temp[pos],1024-pos,"Trueshot Aura: Does (%d%%, %d%% or %d%%) extra damage to the enemy%s",floatround(p_trueshot[0]*100),floatround(p_trueshot[1]*100),floatround(p_trueshot[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Entangle Roots: Allows you to prevent an enemy player from moving for 10 seconds") } else if (p_skills[id][0]==5){ format(title,63,"%s Skills",racename[5]) pos+= format(temp[pos],1024-pos,"Pheonix: You have a (%d%%, %d%% or %d%%) chance of reviving the first teammate who dies%s",floatround(p_pheonix[0]*100),floatround(p_pheonix[1]*100),floatround(p_pheonix[2]*100),p) pos+= format(temp[pos],1024-pos,"Banish: You have a (%d%%, %d%% or %d%%) chance of slapping your enemy%s",floatround(p_banish[0]*100),floatround(p_banish[1]*100),floatround(p_banish[2]*100),p) pos+= format(temp[pos],1024-pos,"Siphon Mana: Steal (%d%%, %d%% or %d%%) of the enemy's money%s",floatround(p_mana[0]*100),floatround(p_mana[1]*100),floatround(p_mana[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Flame Strike: You receive a flame throwers (1 uses every 20 seconds)") } else if (p_skills[id][0]==6){ format(title,63,"%s Skills",racename[6]) pos+= format(temp[pos],1024-pos,"Healing Wave: Every (%d%%, %d%% or %d%%) seconds you and your nearby teammates around you gain 1 HP%s",floatround(p_heal[0]),floatround(p_heal[1]),floatround(p_heal[2]),p) pos+= format(temp[pos],1024-pos,"Hex: You have a (%d%%, %d%% or %d%%) chance of turning your enemy into a big goober (which slows them down)%s",floatround(p_hex[0]*100),floatround(p_hex[1]*100),floatround(p_hex[2]*100),p) pos+= format(temp[pos],1024-pos,"Serpent Ward: You receive (%d, %d or %d) serpent wards each round that damage nearby enemy units,%sbind a key to ability (or say ability) to plant one%s",p_serpent[0],p_serpent[1],p_serpent[2],p,p) pos+= format(temp[pos],1024-pos,"Ultimate, Bid Bad Voodoo: Invincibility for 2 seconds") } else if (p_skills[id][0]==7){ format(title,63,"%s Skills",racename[7]) pos+= format(temp[pos],1024-pos,"Fan of Knives: You have a (%d%%, %d%% or %d%%) chance of becoming a mole%s",floatround(p_fan[0]*100),floatround(p_fan[1]*100),floatround(p_fan[2]*100),p) pos+= format(temp[pos],1024-pos,"Blink: Disables ALL enemy ultimates (%d%%, %d%% or %d%%)%s",floatround(p_blink[0]*100),floatround(p_blink[1]*100),floatround(p_blink[2]*100),p) pos+= format(temp[pos],1024-pos,"Shadow Strike: You have a (%d%%, %d%% or %d%%) chance of hurling a poisoned dagger at the enemy%s",floatround(p_shadow[0]*100),floatround(p_shadow[1]*100),floatround(p_shadow[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Vengeance: Respawn once with 50 health") } else if (p_skills[id][0]==8){ format(title,63,"%s Skills",racename[8]) pos+= format(temp[pos],1024-pos,"Impale: Distorts the enemy%s",p) pos+= format(temp[pos],1024-pos,"Spiked Carapace: Does (%d%%, %d%% or %d%%) mirror damage to the person who shot you and you gain armor%s",floatround(p_spiked[0]*100),floatround(p_spiked[1]*100),floatround(p_spiked[2]*100),p) pos+= format(temp[pos],1024-pos,"Carrion Beetles: You have a (%d%%, %d%% or %d%%) chance of your beetles attacking the enemy when on target%s",floatround(p_carrion[0]*100),floatround(p_carrion[1]*100),floatround(p_carrion[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Locust Swarm: A Swarm of Green Locusts attacks the enemy") } else{ client_cmd(id,"echo %s","You must select a race before selecting skills!") return PLUGIN_HANDLED } #endif if(p_skills[id][0]!=0) add(message,1023,temp) show_motd(id,message,"Race Information") if (saychat==1) return PLUGIN_CONTINUE return PLUGIN_HANDLED } public war3_vote(id,saychat) { if (get_cvar_num("sv_allowwar3vote")==0){ client_print(id,print_center,"Voting is not allowed on this server") return PLUGIN_CONTINUE } new name[32], auth[32] get_user_name(id,name,31) get_user_authid(id,auth,31) log_message("%s <%s> initiated a war3 vote",name,auth) console_print(0,"%s <%s> initiated a war3 vote",name,auth) if (voting > get_gametime()){ if(saychat==1) client_print(id,print_notify,"There is already one voting...") else console_print(id,"There is already one voting...") return PLUGIN_HANDLED } if (voting > 0.0 && voting + get_cvar_float("amx_vote_delay") > get_gametime()) { if(saychat==1) client_print(id,print_notify,"Voting not allowed at this time") else console_print(id,"Voting not allowed at this time") return PLUGIN_HANDLED } new keys = (1<<0)|(1<<1) new menu_msg[256] if (warcraft3==false) format(menu_msg,255,"\yEnable Warcraft 3 Plugin:\w^n^n1. Yes^n2. No") else format(menu_msg,255,"\yDisable Warcraft 3 Plugin:\w^n^n1. Yes^n2. No") new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0 voting = get_gametime() + vote_time vote_ratio = get_cvar_float("amx_votewar3_ratio") show_menu(0,keys,menu_msg,floatround(vote_time)) set_task(vote_time,"check_votes") console_print(id,"Voting has started...") option=0 if (saychat==1) return PLUGIN_CONTINUE return PLUGIN_HANDLED } public vote_count(id,key){ if (get_cvar_float("amx_vote_answers")) { new name[32] get_user_name(id,name,31) client_print(0,print_chat,"* %s voted %s",name,key ? "against" : "for" ) } if (!key) ++option return PLUGIN_HANDLED } public check_votes() { new status[32] new players[32], inum get_players(players,inum,"c") new Float:result_v = inum ? (float(option) / float(inum)) : 0.0 if (result_v=1 && str_to_num(race)<=8) racexp[str_to_num(race)-1] = str_to_num(xp) mysql_check_error() } if (p_skills[id][0]) racexp[p_skills[id][0]-1]=playerxp[id] if(get_cvar_num("FT_8race")) server_cmd("display_race_select %d %d %d %d %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3], racexp[4], racexp[5], racexp[6], racexp[7]) else if(get_cvar_num("FT_5race")) server_cmd("display_race_select %d %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3], racexp[4]) else if(get_cvar_num("FT_4race")) server_cmd("display_race_select %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3]) } else{ if(get_cvar_num("FT_saveby")==0) // Save by steam ID format(mquery, 1023, "SELECT * FROM `%s` WHERE playerid='%s' AND race='%d'",mysqltablename,playerid,p_skills[id][0]) else if(get_cvar_num("FT_saveby")==1) // Save by IP address format(mquery, 1023, "SELECT * FROM `%s` WHERE playerid='%s' AND race='%d'",mysqltablename,ip,p_skills[id][0]) else if(get_cvar_num("FT_saveby")==2) // Save by Player name format(mquery, 1023, "SELECT * FROM `%s` WHERE playerid='%s' AND race='%d'",mysqltablename,playername,p_skills[id][0]) mysql_query(mysql,mquery) mysql_check_error() if (mysql_nextrow(mysql)){ mysql_getfield(mysql,3,xp,7) mysql_getfield(mysql,5,skill1,1) mysql_getfield(mysql,6,skill2,1) mysql_getfield(mysql,7,skill3,1) mysql_getfield(mysql,8,skill4,1) playerxp[id]=str_to_num(xp) p_skills[id][1]=str_to_num(skill1) p_skills[id][2]=str_to_num(skill2) p_skills[id][3]=str_to_num(skill3) p_skills[id][4]=str_to_num(skill4) displaylevel(id,0) } else{ playerxp[id]=0 p_skills[id][1]=0 p_skills[id][2]=0 p_skills[id][3]=0 p_skills[id][4]=0 displaylevel(id,0) } } } else{ // Get info from a vault new info[512], temp[128] new i, attempt if (returnrace) { for(i=1;i<9;i++){ format(xp,7,"") format(race,1,"") format(temp,127,"") if(get_cvar_num("FT_saveby")==0) // Get info by steam ID format(temp,127,"%s_%d",playerid,i) else if(get_cvar_num("FT_saveby")==1) // Get info by IP address format(temp,127,"%s_%d",ip,i) else if(get_cvar_num("FT_saveby")==2) // Get info by Player name format(temp,127,"%s_%d",playername,i) attempt = get_vaultdata(temp,info,511) parse(info, playerid,31, xp,7, race,1, skill1,1, skill2,1, skill3,1, skill4,1) if (str_to_num(race)>=1 && str_to_num(race)<=8) racexp[str_to_num(race)-1] = str_to_num(xp) } if (p_skills[id][0]) racexp[p_skills[id][0]-1]=playerxp[id] if(get_cvar_num("FT_8race")) server_cmd("display_race_select %d %d %d %d %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3], racexp[4], racexp[5], racexp[6], racexp[7]) else if(get_cvar_num("FT_5race")) server_cmd("display_race_select %d %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3], racexp[4]) else if(get_cvar_num("FT_4race")) server_cmd("display_race_select %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3]) } else{ if(get_cvar_num("FT_saveby")==0) // Get info by steam ID format(temp,127,"%s_%d",playerid,p_skills[id][0]) else if(get_cvar_num("FT_saveby")==1) // Get info by IP address format(temp,127,"%s_%d",ip,p_skills[id][0]) else if(get_cvar_num("FT_saveby")==2) // Get info by Player name format(temp,127,"%s_%d",playername,p_skills[id][0]) attempt = get_vaultdata(temp,info,511) if (attempt){ parse(info, playerid,31, xp,7, race,1, skill1,1, skill2,1, skill3,1, skill4,1) playerxp[id]=str_to_num(xp) p_skills[id][1]=str_to_num(skill1) p_skills[id][2]=str_to_num(skill2) p_skills[id][3]=str_to_num(skill3) p_skills[id][4]=str_to_num(skill4) displaylevel(id,0) } else{ playerxp[id]=0 p_skills[id][1]=0 p_skills[id][2]=0 p_skills[id][3]=0 p_skills[id][4]=0 displaylevel(id,0) } } } return PLUGIN_CONTINUE } public set_mysql(){ if (get_cvar_num("sv_mysql")) { get_cvar_string("sv_mysqltablename",mysqltablename,63) new mhost[64], muser[32], mpass[32], mdb[32], primarykey[128] new merror[256] new mquery[512] format (mquery, 511, "CREATE TABLE IF NOT EXISTS `%s` ( `playerid` VARCHAR(35) NOT NULL, `playername` VARCHAR(35) NOT NULL, `xp` INT(11) NOT NULL, `race` TINYINT(4) NOT NULL, `skill1` TINYINT(4), `skill2` TINYINT(4), `skill3` TINYINT(4), `skill4` TINYINT(4), `time` TIMESTAMP( 14 ) NOT NULL, PRIMARY KEY (playerid,race))",mysqltablename) get_cvar_string("FT_mysql_host",mhost,63) get_cvar_string("FT_mysql_user",muser,31) get_cvar_string("FT_mysql_pass",mpass,31) get_cvar_string("FT_mysql_db",mdb,31) mysql = mysql_connect(mhost,muser,mpass,mdb,merror,256) if (merror[0]) { server_print("MYSQL Error Connect: %s", merror) } mysql_query(mysql,mquery) mysql_check_error() format(mquery, 511, "show index from `%s`", mysqltablename) mysql_query(mysql,mquery) mysql_check_error() if (mysql_nextrow(mysql)){ mysql_getfield(mysql,5,primarykey,127) } if (contain(primarykey,"playerid")){ // contain() returns 0 if the two strings match exactly format(mquery, 511, "ALTER TABLE `%s` DROP PRIMARY KEY , ADD PRIMARY KEY ( `playerid` , `race` )", mysqltablename) mysql_query(mysql,mquery) mysql_check_error() } } return PLUGIN_CONTINUE } public mysql_check_error(){ new merror[256] mysql_error(mysql,merror,255) if (merror[0]) { server_print("MYSQL Error Query: %s", merror) } } public plugin_end(){ if (!warcraft3 || !get_cvar_num("mp_savexp")) return PLUGIN_CONTINUE write_all() if (get_cvar_num("sv_mysql_auto_pruning") && get_cvar_num("sv_mysql") && get_cvar_num("mp_savexp")){ new mquery[1024] new currentHour[3] new currentMin[3] get_time("%H",currentHour,2) get_time("%M",currentMin,2) // At 5:36 AM until 5:59 AM a mapchange will trigger an auto-prune. if((str_to_num(currentHour) == 5) && (str_to_num(currentMin) > 35 )){ // Timestamp format: 20030912122142 // Y = 2003 M = 09 D = 12 H = 12 M = 21 S = 42 format(mquery, 1023, "DELETE FROM `%s` WHERE `time` + %d < now()",mysqltablename, get_cvar_num("sv_daysbeforedelete") * 1000000) mysql_query(mysql,mquery) mysql_check_error() } } if (get_cvar_num("sv_mysql")) mysql_close(mysql) // Autopruning code for the vault goes here.... kinda of a pain in the ass so I'm putting it on hold for a bit /* if(get_cvar_num("sv_mysql_auto_pruning") && get_cvar_num("sv_mysql")==0 && get_cvar_num("mp_savexp")){ new nextline=0 new textline[128], textlength, playerid[32], playername[32] new xp[8], race[2], skill1[2], skill2[2], skill3[2], skill4[2] new month[3], day[3], hour[3], minutes[3], temp[3], timet[32] new currentmonth[3], currentday[3], currenthour[3],dayofyear, currentdayofyear new xpnumber, i, playerlevel new daysinmonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31} if (file_exists(XPFILENAME)){ do{ nextline=read_file(XPFILENAME,nextline,textline,127,textlength) if (contain(textline,"##")==0){ parse(textline, temp,2, month,2, day,2, hour,2, minutes,2) break } } while (nextline) get_time("%d",currentday,2) get_time("%m",currentmonth,2) get_time("%H",currenthour,2) if (!equal(currentday,day,2) || !equal(currentmonth,month,2)){ client_print(0,print_chat,"Updating %s...",XPFILENAME) get_time("%m %d %H %M",timet,31) format(textline, 127, "## %s", timet) write_file(XPFILENAME,textline,nextline-1) currentdayofyear = str_to_num(currentday) for (i=1; i=xplevel[i]) playerlevel=i else break } dayofyear = str_to_num(day)+DAYS_BEFORE_DELETE+playerlevel for (i=1; i365) dayofyear-=365 if (dayofyear <= currentdayofyear){ write_file(XPFILENAME,"",nextline-1) } } } while (nextline) remove_empty_lines() } } }*/ return PLUGIN_CONTINUE } public set_longtermxp(){ if (get_cvar_num("mp_savexp")){ BOMBPLANTXP /= 10 DEFUSEXP /= 10 HOSTAGEXP /= 10 KILLRESCUEMANXP /= 10 XPBONUS /= 10 KILL_BOMB_CARRIER /= 10 HEADSHOT_BONUS /= 10 DEFUSER_KILL_BONUS /= 10 VIP_ESCAPE_BONUS /= 10 ROUNDXP /= 10 xpgiven = {6,8,10,12,14,16,20,24,28,32,40} xplevel = {0,100,200,400,800,1600,3200,6400,12800,25600,51200} if (get_cvar_float("mp_xpmultiplier")){ new Float:xpmultiplier=get_cvar_float("mp_xpmultiplier") for (new i=0; i<11; i++) xplevel[i] = floatround(xplevel[i] * xpmultiplier) } } return PLUGIN_CONTINUE } public set_shorttermxp(){ if (get_cvar_num("mp_savexp")==0){ BOMBPLANTXP /= 3 DEFUSEXP /= 3 HOSTAGEXP /= 3 KILLRESCUEMANXP /= 3 XPBONUS /= 3 KILL_BOMB_CARRIER /= 3 HEADSHOT_BONUS /= 3 DEFUSER_KILL_BONUS /= 3 VIP_ESCAPE_BONUS /= 3 ROUNDXP /= 3 xplevel = {0,150,300,600,1000,1500,2100,2800,3400,4500,5500} xpgiven = {60,80,100,120,140,160,180,200,220,240,260} if (get_cvar_float("mp_xpmultiplier")){ new Float:xpmultiplier=get_cvar_float("mp_xpmultiplier") for (new i=0; i<11; i++) xplevel[i] = floatround(xplevel[i] * xpmultiplier) } } return PLUGIN_CONTINUE } public display_race_select(){ new id, idtext[3], menu_msg[512] new racexp1[8], racexp2[8], racexp3[8], racexp4[8], racexp5[8], racexp6[8], racexp7[8], racexp8[8] read_argv(1,idtext,2) read_argv(2,racexp1,7) read_argv(3,racexp2,7) read_argv(4,racexp3,7) read_argv(5,racexp4,7) if(get_cvar_num("FT_8race")){ read_argv(6,racexp5,7) read_argv(7,racexp6,7) read_argv(8,racexp7,7) read_argv(9,racexp8,7) } else if(get_cvar_num("FT_5race")) read_argv(6,racexp5,7) id = str_to_num(idtext) #if GERMAN if(get_cvar_num("FT_8race")){ format(menu_msg,511,"\yWähle deine Rasse\RErfahrung^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n\w5. %s\y\R%s^n\w6. %s\y\R%s^n\w7. %s\y\R%s^n\w8. %s\y\R%s^n^n\w9. Automatische Auswahl",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4, racename[5], racexp5, racename[6], racexp6, racename[7], racexp7, racename[8], racexp8) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9),menu_msg,-1) } else if(get_cvar_num("FT_5race")){ format(menu_msg,511,"\yWähle deine Rasse\RErfahrung^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n\w5. %s\y\R%s^n^n\w6. Automatische Auswahl",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4, racename[5], racexp5) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9),menu_msg,-1) } else if(get_cvar_num("FT_4race")){ format(menu_msg,511,"\yWähle deine Rasse\RErfahrung^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n^n\w5. Automatische Auswahl",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<9),menu_msg,-1) } else client_print(id,print_chat,"[%s] ERROR, PLEASE CONTACT AN ADMIN, THIS MOD IS NOT CONFIGURED CORRECTLY",MOD) #else if(get_cvar_num("FT_8race")){ format(menu_msg,511,"\ySelect Race\RExperience^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n^n\ySelect Hero^n^n\w5. %s\y\R%s^n\w6. %s\y\R%s^n\w7. %s\y\R%s^n\w8. %s\y\R%s^n^n\w9. Auto-select",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4, racename[5], racexp5, racename[6], racexp6, racename[7], racexp7, racename[8], racexp8) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9),menu_msg,-1) } else if(get_cvar_num("FT_5race")){ format(menu_msg,511,"\ySelect Race\RExperience^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n\w5. %s\y\R%s^n^n\w6. Auto-select",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4, racename[5], racexp5) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9),menu_msg,-1) } else if(get_cvar_num("FT_4race")){ format(menu_msg,511,"\ySelect Race\RExperience^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n^n\w5. Auto-select",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<9),menu_msg,-1) } else client_print(id,print_chat,"[%s] ERROR, PLEASE CONTACT AN ADMIN, THIS MOD IS NOT CONFIGURED CORRECTLY",MOD) #endif return PLUGIN_HANDLED } public shopmenu(id){ if (warcraft3==false) return PLUGIN_CONTINUE if(get_cvar_num("FT_competitive")){ if (!is_user_alive(id)){ client_print(id,print_center,"You may not buy items when you are dead.") return PLUGIN_HANDLED } else if(!buytime){ new Float:thetime = get_cvar_float("mp_buytime")*60.0 client_print(id,print_center,"%0.0f seconds have passed. You can't buy anthing now.",thetime) return PLUGIN_HANDLED } else if(!isBuyzone[id]){ client_print(id,print_center,"You must be in the buyzone to purchase an item") return PLUGIN_HANDLED } } new pos = 0 new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9) new menu_body[512] #if GERMAN pos += format(menu_body[pos], 511-pos, "\yGegenstand kaufen\R$ Kosten^n^n") #else pos += format(menu_body[pos], 511-pos, "\yBuy Item\R$ Cost^n^n") #endif for (new i = 0; i<9; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s\y\R%d^n",i+1,itemname[i],itemcost[i]) } #if GERMAN pos += format(menu_body[pos], 511-pos, "^n\w0. Schliessen") #endif #if FRENCH pos += format(menu_body[pos], 511-pos, "^n\w0. Sortir") #endif #if ENGLISH pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") #endif show_menu(id,keys,menu_body,-1) return PLUGIN_HANDLED } public shopmenu2(id){ if (warcraft3==false) return PLUGIN_CONTINUE if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")) return PLUGIN_CONTINUE if(get_cvar_num("FT_competitive")){ if (!is_user_alive(id)){ client_print(id,print_center,"You may not buy items when you are dead.") return PLUGIN_HANDLED } else if(!buytime){ new Float:thetime = get_cvar_float("mp_buytime")*60.0 client_print(id,print_center,"%0.0f seconds have passed. You can't buy anthing now.",thetime) return PLUGIN_HANDLED } else if(!isBuyzone[id]){ client_print(id,print_center,"You must be in the buyzone to purchase an item") return PLUGIN_HANDLED } } new pos = 0 new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9) new menu_body[512] #if GERMAN pos += format(menu_body[pos], 511-pos, "\yGegenstand kaufen 2\R$ Kosten^n^n") #else pos += format(menu_body[pos], 511-pos, "\yBuy An Item\R$ Cost^n^n") #endif for (new i = 0; i<9; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s\y\R%d^n",i+1,itemname2[i],itemcost2[i]) } #if GERMAN pos += format(menu_body[pos], 511-pos, "^n\w0. Schliessen") #endif #if FRENCH pos += format(menu_body[pos], 511-pos, "^n\w0. Sortir") #endif #if ENGLISH pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") #endif show_menu(id,keys,menu_body,-1) return PLUGIN_HANDLED } public buy_item(id,key){ if (warcraft3==false) return PLUGIN_CONTINUE if(get_cvar_num("FT_competitive")){ if (!is_user_alive(id)){ client_print(id,print_center,"You may not buy items when you are dead.") return PLUGIN_HANDLED } else if(!buytime){ new Float:thetime = get_cvar_float("mp_buytime")*60.0 client_print(id,print_center,"%0.0f seconds have passed. You can't buy anthing now.",thetime) return PLUGIN_HANDLED } else if(!isBuyzone[id]){ client_print(id,print_center,"You must be in the buyzone to purchase an item") return PLUGIN_HANDLED } } if (!is_user_alive(id) && (key==7 || key==6 || key==5 || key==4 || key==3 || key==2 || key==1)){ client_print(id,print_center,"You may not purchase that item when dead") return PLUGIN_CONTINUE } new usermoney = get_user_money(id) if (key==9) return PLUGIN_HANDLED else if(key==playeritem[id]-1 && key!=TOME-1){ client_print(id,print_center,"You already own that item") return PLUGIN_HANDLED } else if (usermoney1500) return PLUGIN_HANDLED new temp = bonus while(temp!=0){ bonus = 1 if (p_skills[id][0] == 2 && p_skills[id][2]){ // Devotion Aura Regenerate if(playeritem[id]==HEALTH){ if (p_skills[id][2]-1==0 && get_user_health(id)<(p_devotion[0]+HEALTHBONUS)) set_user_health(id, get_user_health(id)+bonus) else if (p_skills[id][2]-1==1 && get_user_health(id)<(p_devotion[1]+HEALTHBONUS)) set_user_health(id, get_user_health(id)+bonus) else if (p_skills[id][2]-1==2 && get_user_health(id)<(p_devotion[2]+HEALTHBONUS)) set_user_health(id, get_user_health(id)+bonus) } else{ if (p_skills[id][2]-1==0 && get_user_health(id)(100+HEALTHBONUS)){ realhealth = get_user_health(id)-1024 if (playeritem[id]==HEALTH && realhealth<(100+HEALTHBONUS)) set_user_health(id, get_user_health(id)+bonus) else if (realhealth<100) set_user_health(id, get_user_health(id)+bonus) } } else if (playeritem[id]==HEALTH && get_user_health(id)<(100+HEALTHBONUS)) set_user_health(id, get_user_health(id)+bonus) else if (get_user_health(id)<100) set_user_health(id, get_user_health(id)+bonus) temp-- } return PLUGIN_CONTINUE } public giveheifnothas(parm[2]) { new id = parm[0] new wpnList[32] = 0 new number = 0 new foundNade = false get_user_weapons(id,wpnList,number) for (new i = 0;i < number && !foundNade;i++) { if (wpnList[i] == CSW_HEGRENADE) foundNade = true } if (!foundNade && is_user_alive(id)) { set_hudmessage(0, 100, 0, 0.05, 0.65, 2, 0.02, 10.0, 0.01, 0.1, 2) #if GERMAN show_hudmessage(id,"Viel Spass mit der Granate!") #endif #if FRENCH show_hudmessage(id,"Recevez une grenade!") #endif #if ENGLISH show_hudmessage(id,"Enjoy a nade!") #endif give_item(id,"weapon_hegrenade") } justgivennade[id]=false return PLUGIN_CONTINUE } public WC3_Menu(id){ if (warcraft3==false) return PLUGIN_CONTINUE new pos = 0, i, menu_body[512], menu_items[6][32] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9) menu_items[0]= "Skills Menu" menu_items[1]= "Race Menu" menu_items[2]= "Item Menu" menu_items[3]= "Initiate War3FT vote" menu_items[4]= "Help" menu_items[5]= "Admin Menu" pos += format(menu_body[pos], 511-pos, "\yWarcraft 3 Frozen Throne Menu^n^n") for (i = 0; i<6; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) return PLUGIN_CONTINUE } public do_wc3menu(id,key){ switch (key){ case 0: skills_menu(id) case 1: race_menu(id) case 2: item_menu(id) case 3: war3_vote(id,1) case 4: war3_info(id,1) case 5: admin_menu(id) default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } skills_menu(id){ new pos = 0, i, menu_body[512], menu_items[3][32] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<8)|(1<<9) menu_items[0]= "Select Skills" menu_items[1]= "Skills Information" menu_items[2]= "Reselect Skills" pos += format(menu_body[pos], 511-pos, "\ySkills Options^n^n") for (i = 0; i<3; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n^n\w9. Back") pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) return PLUGIN_CONTINUE } public do_skillsmenu(id,key){ switch (key){ case 0: select_skill(id,1) case 1: skills_info(id,1) case 2: resetskills(id,1) case 8: WC3_Menu(id) default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } race_menu(id){ new pos = 0, i, menu_body[512], menu_items[4][32] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<8)|(1<<9) menu_items[0]= "Change Race" menu_items[1]= "Show Level" menu_items[2]= "Reset XP to 0" menu_items[3]= "Show Player Skills" pos += format(menu_body[pos], 511-pos, "\yRace Options^n^n") for (i = 0; i<4; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n^n\w9. Back") pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) return PLUGIN_CONTINUE } public do_racemenu(id,key){ switch (key){ case 0: change_race(id,1) case 1: displaylevel(id,0) case 2: amx_resetxp(id,1) case 3: player_skills(id,1) case 8: WC3_Menu(id) default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } item_menu(id){ new pos = 0, i, menu_body[512], menu_items[4][32] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<8)|(1<<9) menu_items[0]= "Shopmenu 1" menu_items[1]= "Shopmenu 2" menu_items[2]= "Show Shopmenu Information" menu_items[3]= "Show Shopmenu 2 Information" pos += format(menu_body[pos], 511-pos, "\yItem Options^n^n") for (i = 0; i<4; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n^n\w9. Back") pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) return PLUGIN_CONTINUE } public do_itemmenu(id,key){ switch (key){ case 0: shopmenu(id) case 1: shopmenu2(id) case 2: items_info(id,1) case 3: items_info2(id,1) case 8: WC3_Menu(id) default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } // Code taken from plmenu.sma (default AMX file) new g_menuPosition[33] new g_menuPlayers[33][32] new g_menuPlayersNum[33] new g_menuOption[33] new g_menuSettings[33] admin_menu(id){ if (!(get_user_flags(id)&ADMIN_LEVEL_A)) { if(id != 0){ client_print(id,print_center,"You have no access to that command") return PLUGIN_HANDLED } } new pos = 0, i, menu_body[512], menu_items[3][32] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<8)|(1<<9) menu_items[0]= "Give Individual Players XP" menu_items[1]= "Give Multiple Players XP" menu_items[2]= "Save everyone's XP" pos += format(menu_body[pos], 511-pos, "\yAdmin Menu^n^n") for (i = 0; i<3; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n^n\w9. Back") pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) return PLUGIN_CONTINUE } public do_adminmenu(id,key){ switch (key){ case 0:{ g_menuOption[id] = 1 g_menuSettings[id] = 50 playerxp_menu(id,g_menuPosition[id] = 0) } case 1:{ g_menuOption[id] = 1 g_menuSettings[id] = 50 teamxp_menu(id) } case 2: server_cmd("amx_savexp @ALL") case 8: WC3_Menu(id) default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } playerxp_menu(id,pos){ if (pos < 0){ admin_menu(id) return PLUGIN_CONTINUE } get_players(g_menuPlayers[id],g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32], team[4] new start = pos * 7 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody,511, "\yGive Players XP\R%d/%d^n\w^n",pos+1,(g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0 ))) new end = start + 7 new keys = (1<<9)|(1<<7) if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for(new a = start; a < end; ++a){ i = g_menuPlayers[id][a] get_user_name(i,name,31) get_user_team(i,team,3) keys |= (1<6){ g_menuOption[id]=1 } switch(g_menuOption[id]){ case 1: g_menuSettings[id] = 50 case 2: g_menuSettings[id] = 100 case 3: g_menuSettings[id] = 500 case 4: g_menuSettings[id] = 1000 case 5: g_menuSettings[id] = 5000 case 6: g_menuSettings[id] = 10000 } playerxp_menu(id,g_menuPosition[id]) } case 8: playerxp_menu(id,++g_menuPosition[id]) case 9: playerxp_menu(id,--g_menuPosition[id]) default:{ new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key] client_print(player,print_chat,"[%s] The admin just awarded you %d experience.",MOD,g_menuSettings[id]) playerxp[player]+=g_menuSettings[id] displaylevel(player,1) playerxp_menu(id,g_menuPosition[id]) } } return PLUGIN_HANDLED } teamxp_menu(id){ new pos = 0, i, menu_body[512], menu_items[3][32] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<7)|(1<<8)|(1<<9) menu_items[0]= "Terrorist" menu_items[1]= "Counter-Terrorists" menu_items[2]= "Everyone" pos += format(menu_body[pos], 511-pos, "\yTeam XP Menu^n^n") for (i = 0; i<3; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos,"^n8. Give %d XP^n",g_menuSettings[id]) pos += format(menu_body[pos], 511-pos, "^n^n\w9. Back") pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) return PLUGIN_CONTINUE } public do_teamxpmenu(id,key) { switch(key){ case 0:{ server_cmd("amx_givexp @TERRORIST %d",g_menuSettings[id]) teamxp_menu(id) } case 1:{ server_cmd("amx_givexp @CT %d",g_menuSettings[id]) teamxp_menu(id) } case 2:{ server_cmd("amx_givexp @ALL %d",g_menuSettings[id]) teamxp_menu(id) } case 7:{ ++g_menuOption[id] if (g_menuOption[id]>6){ g_menuOption[id]=1 } switch(g_menuOption[id]){ case 1: g_menuSettings[id] = 50 case 2: g_menuSettings[id] = 100 case 3: g_menuSettings[id] = 500 case 4: g_menuSettings[id] = 1000 case 5: g_menuSettings[id] = 5000 case 6: g_menuSettings[id] = 10000 } teamxp_menu(id) } case 8: admin_menu(id) case 9: return PLUGIN_HANDLED default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } /*public WC3_Menu3(id){ if (warcraft3==false) return PLUGIN_CONTINUE new pos = 0, i new menu_body[512] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) new menu_items[9][32] #if GERMAN if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")){ menu_items[0]= "Wechsle deine Rasse" menu_items[1]= "Einkaufs Menu" menu_items[2]= "Fertigkeiten auswählen" menu_items[3]= "Anzeige deines Levels" menu_items[4]= "Spieler Fertigkeiten" menu_items[5]= "Fertigkeitsinformationen" menu_items[6]= "Gegenstandsinformationen" menu_items[7]= "War3 Hilfe" menu_items[8]= "Fertigkeiten neu einstellen " pos += format(menu_body[pos], 511-pos, "\yWarcraft 3 XP Menu^n^n") for (i = 0; i<9; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n\w0. Schliessen") show_menu(id,keys,menu_body,-1) } else{ menu_items[0]= "Wechsle deine Rasse" menu_items[1]= "Einkaufs Menu" menu_items[2]= "Einkaufs Menu 2" menu_items[3]= "Anzeige deines Levels" menu_items[4]= "Spieler Fertigkeiten" menu_items[5]= "Fertigkeitsinformationen" menu_items[6]= "Gegenstandsinformationen" menu_items[7]= "Gegenstandsinformationen 2" menu_items[8]= "Mehr" pos += format(menu_body[pos], 511-pos, "\yWarcraft 3 Frozen Throne Menu^n^n") for (i = 0; i<9; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n\w0. Schliessen") show_menu(id,keys,menu_body,-1) } #else if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")){ menu_items[0]= "Change Race" menu_items[1]= "Shop Menu" menu_items[2]= "Select Skills" menu_items[3]= "Show Level" menu_items[4]= "Player Skills" menu_items[5]= "Skills Info" menu_items[6]= "Items Info" menu_items[7]= "War3 Help" menu_items[8]= "Reset Skills" pos += format(menu_body[pos], 511-pos, "\yWarcraft 3 XP Menu^n^n") for (i = 0; i<9; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) } else{ menu_items[0]= "Change Race" menu_items[1]= "Shop Menu" menu_items[2]= "Shop Menu 2" menu_items[3]= "Show Level" menu_items[4]= "Player Skills" menu_items[5]= "Skills Info" menu_items[6]= "Items Info" menu_items[7]= "Items Info 2" menu_items[8]= "More" pos += format(menu_body[pos], 511-pos, "\yWarcraft 3 Frozen Throne Menu^n^n") for (i = 0; i<9; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) } #endif return PLUGIN_HANDLED } public do_wc3menu3(id,key){ if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")){ switch (key){ case 0: change_race(id) case 1: shopmenu(id) case 2: select_skill(id,1) case 3: say_level(id) case 4: player_skills(id,1) case 5: skills_info(id,1) case 6: items_info(id,1) case 7: war3_info(id,1) case 8: resetskills(id) default: return PLUGIN_HANDLED } if (file_exists("sound/warcraft3/pickupitem.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/pickupitem.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } else{ switch (key){ case 0: change_race(id) case 1: shopmenu(id) case 2: shopmenu2(id) case 3: say_level(id) case 4: player_skills(id,1) case 5: skills_info(id,1) case 6: items_info(id,1) case 7: items_info2(id,1) case 8: WC3_menu2(id) case 9: WC3_menu2(id) default: return PLUGIN_HANDLED } if (file_exists("sound/warcraft3/pickupitem.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/pickupitem.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } return PLUGIN_HANDLED } public WC3_menu2(id){ new pos = 0 new menu_body[512] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9) #if GERMAN new menu_items[9][] = {"War3 Hilfe","Fertigkeiten neu einstellen","Fertigkeiten auswählen","Zurueck","","","","",""} #else new menu_items[9][] = {"War3 Help","Reset Skills","Select Skills","Back","","","","",""} #endif pos += format(menu_body[pos], 511-pos, "\yWar3 Menu (cont)^n^n") for (new i = 0; i<4; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } #if GERMAN pos += format(menu_body[pos], 511-pos, "^n\w0. Schliessen") #else pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") #endif show_menu(id,keys,menu_body,-1) return PLUGIN_HANDLED } public do_wc3menu2(id,key){ switch (key){ case 0: war3_info(id,1) case 1: resetskills(id) case 2: select_skill(id,1) case 3: WC3_Menu(id) default: return PLUGIN_HANDLED } if (file_exists("sound/warcraft3/pickupitem.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/pickupitem.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) return PLUGIN_HANDLED } */ public plugin_precache() { g_sModelIndexFireball = precache_model("sprites/zerogxplode.spr") g_sModelIndexSmoke = precache_model("sprites/steam1.spr") m_iSpriteTexture = precache_model( "sprites/shockwave.spr") flaresprite = precache_model( "sprites/blueflare2.spr") iBeam4 = precache_model("sprites/zbeam4.spr") m_iTrail = precache_model("sprites/smoke.spr") lightning = precache_model("sprites/lgtning.spr") shadow = precache_model("sprites/animglow01.spr") grunt = precache_model("sprites/agrunt1.spr") snow = precache_model("sprites/snow.spr") fire = precache_model("sprites/explode1.spr") burning = precache_model("sprites/xfire.spr") if (file_exists("models/player/goomba/goomba.mdl")) precache_model("models/player/goomba/goomba.mdl") precache_sound("ambience/particle_suck1.wav") precache_sound("turret/tu_ping.wav") precache_sound("weapons/cbar_hitbod3.wav") if (file_exists("sound/warcraft3/banishcaster.wav")) precache_sound("warcraft3/banishcaster.wav") if (file_exists("sound/warcraft3/antend.wav")) precache_sound("warcraft3/antend.wav") if (file_exists("sound/warcraft3/tomes.wav")) precache_sound("warcraft3/tomes.wav") if (file_exists("sound/warcraft3/locustswarmloopwav.wav")) precache_sound("warcraft3/locustswarmloopwav.wav") if (file_exists("sound/warcraft3/impalelaunch1.wav")) precache_sound("warcraft3/impalelaunch1.wav") if (file_exists("sound/warcraft3/shadowstrikemissile1.wav")) precache_sound("warcraft3/shadowstrikemissile1.wav") if (file_exists("sound/warcraft3/locustswarmloop.wav")) precache_sound("warcraft3/locustswarmloop.wav") if(file_exists("sound/warcraft3/soundpack/reincarnation.wav")) precache_sound("warcraft3/soundpack/reincarnation.wav") if(file_exists("sound/warcraft3/shadowstrikebirth1.wav")) precache_sound("warcraft3/shadowstrikebirth1.wav") if(file_exists("sound/warcraft3/carrionswarmdamage1.wav")) precache_sound("warcraft3/carrionswarmdamage1.wav") if(file_exists("sound/warcraft3/carrionswarmlaunch1.wav")) precache_sound("warcraft3/carrionswarmlaunch1.wav") if(file_exists("sound/warcraft3/impalehit.wav")) precache_sound("warcraft3/impalehit.wav") if(file_exists("sound/warcraft3/divineshield.wav")) precache_sound("warcraft3/divineshield.wav") if (file_exists("sound/warcraft3/flamestriketargetwavenonloop1.wav")) precache_sound("warcraft3/flamestriketargetwavenonloop1.wav") if (file_exists("sound/warcraft3/entanglingrootstarget1.wav")) precache_sound("warcraft3/entanglingrootstarget1.wav") else{ precache_sound("weapons/electro5.wav") precache_sound("weapons/cbar_hitbod3.wav") } if (file_exists("sound/warcraft3/levelupcaster.wav")) precache_sound("warcraft3/levelupcaster.wav") else precache_sound("plats/elevbell1.wav") if (file_exists("sound/warcraft3/lightningbolt.wav")) precache_sound("warcraft3/lightningbolt.wav") else precache_sound("weapons/gauss2.wav") if (file_exists("sound/warcraft3/massteleporttarget.wav")) precache_sound("warcraft3/massteleporttarget.wav") else precache_sound("x/x_shoot1.wav") if (file_exists("sound/warcraft3/blinkarrival.wav")) precache_sound("warcraft3/blinkarrival.wav") else precache_sound("x/x_shoot1.wav") if (file_exists("sound/warcraft3/pickupitem.wav")) precache_sound("warcraft3/pickupitem.wav") return PLUGIN_CONTINUE } public showRank(id) { if(!get_cvar_num("FT_spec_info")) return PLUGIN_CONTINUE if(!g_specMode[id]) return PLUGIN_CONTINUE new a = read_data(2) if (!is_user_connected(a)) return PLUGIN_CONTINUE // not valid target new name[32] get_user_name( a ,name,31) new temp[512] new message[1048] #if CSSTATS_ENABLED new data[8], data2[8] new pos = get_user_stats( a ,data,data2) format(temp,511,"Rank is %d of %d^n",pos,get_statsnum()) add(message,1047,temp) #endif if (playerxp[a]<0) playerxp[a]=0 for (new i=0; i<=10; ++i){ if (playerxp[a]>=xplevel[i]) p_level[a]=i else break } if (p_level[a]==0) format(temp,511,"%s XP: %d/%d",shortracename[p_skills[a][0]],playerxp[a],xplevel[p_level[a]+1]) else if (p_level[a]<10) format(temp,511,"%s Level %d XP: %d/%d",shortracename[p_skills[a][0]],p_level[a],playerxp[a],xplevel[p_level[a]+1]) else format(temp,511,"%s Level %d XP: %d/%d",shortracename[p_skills[a][0]],p_level[a],xplevel[10],xplevel[10]) add(message,1047,temp) if (playeritem[a]!=0 && (playeritem2[a]!=0 && playeritem2[a]!=MOLE)){ if (playeritem2[a]==REGEN) format(temp,511," %s and %s x%d",playeritem[a]?itemname[playeritem[a]-1]:"",playeritem2[a]?itemname2[playeritem2[a]-1]:"",rings[a]) else format(temp,511," %s and %s",playeritem[a]?itemname[playeritem[a]-1]:"",playeritem2[a]?itemname2[playeritem2[a]-1]:"") } else if (playeritem[a]==0 && (playeritem2[a]!=0 && playeritem2[a]!=MOLE)){ if (playeritem2[a]==REGEN) format(temp,511," %s x%d",playeritem2[a]?itemname2[playeritem2[a]-1]:"",rings[a]) else format(temp,511," %s",playeritem2[a]?itemname2[playeritem2[a]-1]:"") } else format(temp,511," ") new health = get_user_health(a) add(message,1047,temp) if (health>500) health-=1024 format(temp,511,"^nCurrent Health: %d^nArmor: %d",health,get_user_armor(a)) add(message,1047,temp) if(get_cvar_num("FT_position")==0) set_hudmessage(255,255,255,0.018,0.9,2, 1.5, 12.0, 0.02, 5.0, 1) else set_hudmessage(255,255,255,0.65,0.9,2, 1.5, 12.0, 0.02, 5.0, 1) show_hudmessage(id,message) return PLUGIN_CONTINUE } public setSpecMode(id) { new arg[12] read_data( 2 , arg , 11 ) g_specMode[ id ] = ( arg[10] == '2' ) ? true : false } fire_flamethrower(id){ emit_sound(id, CHAN_WEAPON, "warcraft3/flamestriketargetwavenonloop1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) new vec[3] new aimvec[3] new velocityvec[3] new length new speed = 10 get_user_origin(id,vec) get_user_origin(id,aimvec,2) new dist = get_distance(vec,aimvec) if (flame_count[id]==1){ new parm[1] parm[0]=id set_task(get_cvar_float("FT_flamestrike_cooldown"),"cooldown",500+id,parm,1) } new speed1 = 160 new speed2 = 350 new radius = 105 if(dist < 50){ radius = 0 speed = 5 } else if(dist < 150){ speed1 = speed2 = 1 speed = 5 radius = 50 } else if(dist < 200){ speed1 = speed2 = 1 speed = 5 radius = 90 } else if(dist < 250){ speed1 = speed2 = 90 speed = 6 radius = 90 } else if(dist < 300){ speed1 = speed2 = 140 speed = 7 } else if(dist < 350){ speed1 = speed2 = 190 speed = 7 } else if(dist < 400){ speed1 = 150 speed2 = 240 speed = 8 } else if(dist < 450){ speed1 = 150 speed2 = 290 speed = 8 } else if(dist < 500){ speed1 = 180 speed2 = 340 speed = 9 } velocityvec[0]=aimvec[0]-vec[0] velocityvec[1]=aimvec[1]-vec[1] velocityvec[2]=aimvec[2]-vec[2] length=sqrt(velocityvec[0]*velocityvec[0]+velocityvec[1]*velocityvec[1]+velocityvec[2]*velocityvec[2]) velocityvec[0]=velocityvec[0]*speed/length velocityvec[1]=velocityvec[1]*speed/length velocityvec[2]=velocityvec[2]*speed/length new args[8] args[0] = vec[0] args[1] = vec[1] args[2] = vec[2] args[3] = velocityvec[0] args[4] = velocityvec[1] args[5] = velocityvec[2] set_task(0.1,"te_spray",0,args,8,"a",2) check_burnzone(id,vec,aimvec,speed1,speed2,radius) } public te_spray(args[]){ //TE_SPRAY message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte (120) // Throws a shower of sprites or models write_coord(args[0]) // start pos write_coord(args[1]) write_coord(args[2]) write_coord(args[3]) // velocity write_coord(args[4]) write_coord(args[5]) write_short (fire) // spr write_byte (8) // count write_byte (70) // speed write_byte (100) //(noise) write_byte (5) // (rendermode) message_end() return PLUGIN_CONTINUE } check_burnzone(id,vec[],aimvec[],speed1,speed2,radius){ new maxplayers = get_maxplayers()+1 new tbody,tid get_user_aiming(id,tid,tbody,550) if((tid > 0) && (tid < maxplayers)){ if(cvar_exists("mp_friendlyfire")){ new ffcvar = get_cvar_num("mp_friendlyfire") if( (ffcvar == 0) || (ffcvar == 1)){ if(get_user_team(tid) != get_user_team(id)) burn_victim(tid,id,0) }else{ if(get_user_team(tid) == get_user_team(id)) burn_victim(tid,id,1) else burn_victim(tid,id,0) } }else{ burn_victim(tid,id,0) } } new burnvec1[3],burnvec2[3],length1 burnvec1[0]=aimvec[0]-vec[0] burnvec1[1]=aimvec[1]-vec[1] burnvec1[2]=aimvec[2]-vec[2] length1=sqrt(burnvec1[0]*burnvec1[0]+burnvec1[1]*burnvec1[1]+burnvec1[2]*burnvec1[2]) burnvec2[0]=burnvec1[0]*speed2/length1 burnvec2[1]=burnvec1[1]*speed2/length1 burnvec2[2]=burnvec1[2]*speed2/length1 burnvec1[0]=burnvec1[0]*speed1/length1 burnvec1[1]=burnvec1[1]*speed1/length1 burnvec1[2]=burnvec1[2]*speed1/length1 burnvec1[0] += vec[0] burnvec1[1] += vec[1] burnvec1[2] += vec[2] burnvec2[0] += vec[0] burnvec2[1] += vec[1] burnvec2[2] += vec[2] new origin[3] for (new i=1; i<=maxplayers; i++) { if(cvar_exists("mp_friendlyfire")){ new ffcvar = get_cvar_num("mp_friendlyfire") if( (ffcvar == 0) || (ffcvar == 1) ){ if(get_user_team(i) != get_user_team(id)){ if((is_user_alive(i) == 1) && (i != id)){ get_user_origin(i,origin) if(get_distance(origin,burnvec1) < radius) burn_victim(i,id,0) else if(get_distance(origin,burnvec2) < radius) burn_victim(i,id,0) } } }else{ if((is_user_alive(i) == 1) && (i != id)){ get_user_origin(i,origin) if(get_user_team(i) == get_user_team(id)){ if(get_distance(origin,burnvec1) < radius) burn_victim(i,id,1) else if(get_distance(origin,burnvec2) < radius) burn_victim(i,id,1) }else{ if(get_distance(origin,burnvec1) < radius) burn_victim(i,id,0) else if(get_distance(origin,burnvec2) < radius) burn_victim(i,id,0) } } } }else{ if((is_user_alive(i) == 1) && (i != id)){ get_user_origin(i,origin) if(get_distance(origin,burnvec1) < radius) burn_victim(i,id,0) else if(get_distance(origin,burnvec2) < radius) burn_victim(i,id,0) } } } return PLUGIN_CONTINUE } burn_victim(id,killer,tk){ if(isburning[id] == 1) return PLUGIN_CONTINUE if (playeritem[id]==IMMUNITY || hasblink[id]) return PLUGIN_CONTINUE isburning[id] = 1 new hp,args[4] hp = get_user_health(id) if(hp > 250) hp = 250 args[0] = id args[1] = killer args[2] = tk set_task(0.3,"on_fire",451,args,4,"a",hp / 10) return PLUGIN_CONTINUE } public on_fire(args[]){ // new hp new rx,ry,rz,forigin[3] new id = args[0] new killer = args[1] if(isburning[id] == 0) return PLUGIN_CONTINUE rx = random_num(-30,30) ry = random_num(-30,30) rz = random_num(-30,30) get_user_origin(id,forigin) //TE_SPRITE - additive sprite, plays 1 cycle message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( 17 ) write_coord(forigin[0]+rx) // coord, coord, coord (position) write_coord(forigin[1]+ry) write_coord(forigin[2]+10+rz) write_short( burning ) // short (sprite index) write_byte( 30 ) // byte (scale in 0.1's) write_byte( 200 ) // byte (brightness) message_end() //Smoke message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( 5 ) write_coord(forigin[0]+(rx*2)) // coord, coord, coord (position) write_coord(forigin[1]+(ry*2)) write_coord(forigin[2]+100+(rz*2)) write_short( g_sModelIndexSmoke )// short (sprite index) write_byte( 60 ) // byte (scale in 0.1's) write_byte( 15 ) // byte (framerate) message_end() if(is_user_alive(id) == 0) return PLUGIN_CONTINUE do_damage(id,killer, 10,13, 3, 0, 0, 0) return PLUGIN_CONTINUE } public healitnow(parm[2]){ new id = parm[0] if (!endround && is_user_alive(id) && p_skills[id][1] && p_skills[id][0]==6) set_task(p_heal[p_skills[id][1]-1],"healitnow",id+90,parm,2) healingnext(parm) return PLUGIN_CONTINUE } public healingnext(parm[2]){ // Healing Wave new id=parm[0] new origin[3] get_user_origin(id, origin) new players[32] new numberofplayers new teamname[32] get_user_team(id, teamname, 31) get_players(players, numberofplayers,"ae",teamname) new i new targetid = 0 new distancebetween = 0 new targetorigin[3] new heal = 1 new closestid = 0 for (i = 0; i < numberofplayers; ++i){ targetid=players[i] if (get_user_team(id)==get_user_team(targetid) && is_user_alive(targetid)){ get_user_origin(targetid,targetorigin) distancebetween=get_distance(origin,targetorigin) if (distancebetween < get_cvar_num("FT_healing_range") && !healinghit[targetid]) closestid = targetid } } if (closestid){ healingeffect(id,closestid,heal) parm[0]=targetid parm[1]=heal set_task(0.2,"healingnext",27,parm,2) } else{ for (i = 0; i < numberofplayers; ++i){ targetid=players[i] healinghit[targetid]=false } } return PLUGIN_CONTINUE } public healingeffect(id,targetid,heal){ healinghit[targetid]=true new realhealth if (!is_user_alive(targetid)) return PLUGIN_HANDLED // if(hasgodmode[id]) // return PLUGIN_CONTINUE if (p_skills[targetid][0] == 2 && p_skills[targetid][2]){ // Devotion Aura if(playeritem[targetid]==HEALTH){ if (p_skills[targetid][2]-1==0 && get_user_health(targetid)<(p_devotion[0]+HEALTHBONUS)) set_user_health(targetid, get_user_health(targetid)+heal) else if (p_skills[targetid][2]-1==1 && get_user_health(targetid)<(p_devotion[1]+HEALTHBONUS)) set_user_health(targetid, get_user_health(targetid)+heal) else if (p_skills[targetid][2]-1==2 && get_user_health(targetid)<(p_devotion[2]+HEALTHBONUS)) set_user_health(targetid, get_user_health(targetid)+heal) } else{ if (p_skills[targetid][2]-1==0 && get_user_health(targetid)115){ realhealth = get_user_health(targetid)-1024 if (playeritem[targetid]==HEALTH && realhealth<(100+HEALTHBONUS)) set_user_health(targetid, get_user_health(targetid)+heal) else if (realhealth<100) set_user_health(targetid, get_user_health(targetid)+heal) } } else if (playeritem[targetid]==HEALTH && get_user_health(targetid)<(100+HEALTHBONUS)) // HEALTHBONUS set_user_health(targetid, get_user_health(targetid)+heal) else if (get_user_health(targetid)<100) set_user_health(targetid, get_user_health(targetid)+heal) new origin[3] get_user_origin(targetid,origin) if(playeritem[targetid]!=CLOAK && (p_skills[targetid][0]!=2 && !p_skills[targetid][1])){ message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_IMPLOSION ); write_coord(origin[0]) // initial position write_coord(origin[1]) // initial position write_coord(origin[2]) // initial position write_byte(100) // radius write_byte( 8 ); // count write_byte( 1 ); // life message_end(); } return PLUGIN_CONTINUE } public lightpls(parm[6]){ new id = parm[5] if (!is_user_alive(id)) return PLUGIN_CONTINUE new origin[3], damage origin[0]=parm[0] origin[1]=parm[1] origin[2]=parm[2] message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( 0 ) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]+600) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]-600) write_short( lightning ) write_byte( 1 ) // framestart write_byte( 5 ) // framerate write_byte( 2 ) // life write_byte( 500 ) // width write_byte( 20 ) // noise if(serpentteam[id]==1){ write_byte( 255 ) // r write_byte( 0 ) // g write_byte( 0 ) // b } else{ write_byte( 0 ) // r write_byte( 0 ) // g write_byte( 255 ) // b } write_byte( 100 ) // brightness write_byte( 100 ) // speed message_end() new players[32] new numberofplayers get_players(players, numberofplayers) new i new targetid = 0 new distancebetween = 0 new targetorigin[3] for (i = 0; i < numberofplayers; ++i){ targetid=players[i] if (serpentteam[id]!=get_user_team(targetid) &&is_user_alive(targetid)){ get_user_origin(targetid,targetorigin) distancebetween=sqrt((origin[1]-targetorigin[1])*(origin[1]-targetorigin[1])+(origin[0]-targetorigin[0])*(origin[0]-targetorigin[0])) if ((distancebetween < 85)){ damage = 10 do_damage(targetid,id, damage,14, 3, 0, 0, 0) client_cmd(targetid, "spk ambience/thunder_clap.wav") message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 255 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][3] ) // fade alpha message_end() if (iglow[id][0] < 1){ new parm2[2] parm2[0]=id set_task(0.01,"glow_change",8,parm2,2) } iglow[id][0] += 3*damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } } } if (!endround) set_task(0.45,"lightpls",43,parm,6) return PLUGIN_CONTINUE } public ability(id){ if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")) return PLUGIN_CONTINUE if(is_user_alive(id)){ if (p_skills[id][0] == 6 && serpents[id]>0 && !endround){ //Serpent Ward if (get_user_team(id)==1) //CT serpentteam[id]=1 else //T serpentteam[id]=2 new parm[6] new origin[3] get_user_origin(id,origin) parm[0]=origin[0] parm[1]=origin[1] parm[2]=origin[2] parm[5]=id lightpls(parm) set_hudmessage(200, 100, 0, 0.2, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 2) serpents[id]-- show_hudmessage(id,"Serpent Ward Placed, %d remaining", serpents[id]) } } return PLUGIN_HANDLED } public checkmap(){ //Prevents war3:FT to give pistols w/knife only maps new mapname[32] get_mapname(mapname,31) if (containi(mapname,"ka_")!=-1 || containi(mapname,"scoutzknivez")!=-1){ givepistol=false if (get_cvar_num("FT_no_gloves_on_ka")) givenade=false else givenade=true } else{ givenade=true givepistol=true } if(get_cvar_num("FT_no_orcnades")){ if (containi(mapname,"ka_")!=-1 || containi(mapname,"jail_riot")!=-1 || containi(mapname,"fy_")!=-1) no_he=true else no_he=false } return PLUGIN_CONTINUE } public hebuy(id){ if(get_cvar_num("mp_grenadeprotection")==0) return PLUGIN_CONTINUE if(!isBuyzone[id]) return PLUGIN_HANDLED if (he[id]>0){ client_print(id,print_center,"Only one HE grenade per round") return PLUGIN_HANDLED } else{ ++he[id] return PLUGIN_CONTINUE } return PLUGIN_HANDLED } public BuyZone(id) { if (read_data(1)) isBuyzone[id] = true else isBuyzone[id] = false return PLUGIN_CONTINUE } public check_for_living(){ // Function is used to save the weapons if someone died from the bomb exploding new players[32] new numberofplayers get_players(players, numberofplayers) new i, id for (i = 0; i < numberofplayers; ++i){ id = players[i] if(is_user_alive(id)){ alive_before_explosion[id]=true saveweapons(id) } } return PLUGIN_CONTINUE } // Player Events public event_player_action(){ new sArg[MAX_VAR_LENGTH], sAction[MAX_VAR_LENGTH] new sName[MAX_NAME_LENGTH] new id, iUserId if (warcraft3==false) return PLUGIN_CONTINUE new theplayers[32], CTnum, Tnum get_players(theplayers,CTnum,"e","CT") get_players(theplayers,Tnum,"e","TERRORIST") if((Tnum+CTnum)0 && CTnum>0){} else return PLUGIN_HANDLED read_logargv(0,sArg,MAX_VAR_LENGTH) read_logargv(2,sAction,MAX_VAR_LENGTH) parse_loguser(sArg,sName,MAX_NAME_LENGTH,iUserId) id = find_player("k",iUserId) if(id==0) // Prevents the server from gaining XP return PLUGIN_CONTINUE // Bomb planted if (equal(sAction,"Planted_The_Bomb")) { new origin[3] new teamname[32] new player[32] new numplayers new targetorigin[3] new targetid get_user_origin(id, origin) get_user_team(id, teamname, 31) get_players(player, numplayers, "ae", teamname) bombCarrier = 0 set_task(get_cvar_num("mp_c4timer")-1.0,"check_for_living",645+id) // Used to help reincarnation after dying from bomb new temp temp = 3 * xpgiven[p_level[id]] playerxp[id]+= temp if (get_cvar_num("FT_objectives")) client_print(id,print_chat, "[%s] %s recieved %d extra XP for personally planting the bomb.",MOD,sName,temp) for (new i=0; i 32 || !is_user_alive(id) || gotShield[id] ) return PLUGIN_CONTINUE new modelName[32] Entvars_Get_String(entId, EV_SZ_model, modelName, 31) if ( containi(modelName,"w_shield.mdl") != -1 ) { new parm[1] parm[0] = id remove_task(2200 + id,0) set_task(0.1,"check_shield",2200 + id,parm,1) } return PLUGIN_CONTINUE } public check_shield(parm[1]) { new id = parm[0] new modelName[32] Entvars_Get_String(id, EV_SZ_viewmodel, modelName, 31) if ( containi(modelName,"v_shield_") != -1 ) gotShield[id]=true else gotShield[id]=false return PLUGIN_HANDLED } public shieldbuy(id){ if(get_user_money(id)>=2200) gotShield[id]=true new parm[1] set_task(0.1,"check_shield",2100 + id,parm,1) return PLUGIN_CONTINUE } public set_variables(){ BOMBPLANTXP = get_cvar_num("FT_bombplanterxp") DEFUSEXP = get_cvar_num("FT_defusexp") HOSTAGEXP = get_cvar_num("FT_hostagexp") KILLRESCUEMANXP = get_cvar_num("FT_killrescuemanxp") XPBONUS = get_cvar_num("FT_xpbonus") KILL_BOMB_CARRIER = get_cvar_num("FT_kill_bomb_carrier_bonus") HEADSHOT_BONUS = get_cvar_num("FT_headshot_bonus") DEFUSER_KILL_BONUS = get_cvar_num("FT_defuser_kill_bonus") VIP_ESCAPE_BONUS = get_cvar_num("FT_VIP_escape_bonus") ROUNDXP = get_cvar_num("FT_round_win_XP") // MOD SELECTION if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")) MOD = "WAR3" else if (get_cvar_num("FT_8race")) MOD = "WAR3FT" else server_print("ERROR, INCORRECT NUMBER OF RACES ARE SELECTED") new temp = 0 if(get_cvar_num("FT_5race")) temp++ if(get_cvar_num("FT_4race")) temp++ if (get_cvar_num("FT_8race")) temp++ if(temp>1){ server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") } return PLUGIN_CONTINUE } public clear_all_icons(id){ new string [8][32] = {"dmg_rad","item_longjump","dmg_shock","item_healthkit","dmg_heat","suit_full","cross","dmg_gas"} for(new i=0;i<8;i++){ message_begin( MSG_ONE, gmsgIcon, {0,0,0}, id ) write_byte( ICON_HIDE ) // status write_string( string[i] ) // sprite name write_byte( 0 ) // red write_byte( 0 ) // green write_byte( 0 ) // blue message_end() } } public icon_controller(id, value){ if (!get_cvar_num("FT_show_icons")) return PLUGIN_HANDLED if(!p_skills[id][4]) return PLUGIN_HANDLED if(p_skills[id][0]==2 && p_skills[id][4] && blinkdelayed[id] && get_cvar_num("FT_blinkstartdisabled")) return PLUGIN_HANDLED if(freezetime) return PLUGIN_HANDLED if (u_delay) return PLUGIN_HANDLED new string[32], r, g, b switch(p_skills[id][0]){ // Color of the icons based on race case 1: format(string,31,"dmg_rad"),r=255,g=0,b=0 // Undead case 2: format(string,31,"item_longjump"),r=0,g=120,b=120 // Human case 3: format(string,31,"dmg_shock"),r=255, g=255, b=255 // Orc case 4: format(string,31,"item_healthkit"),r=0,g=0,b=255 // Night Elf case 5: format(string,31,"dmg_heat"),r=255, g=0, b=0 // Blood Mage case 6: format(string,31,"suit_full"), r=0, g=200, b=200 // Shadow Hunter case 7: format(string,31,"cross"), r=255, g=0, b=0 // Warden case 8: format(string,31,"dmg_gas"), r=0, g=255, b=0 // Crypt Lord } if(!is_user_alive(id)) // If the user is dead then hide the icon value = ICON_HIDE if(value==ICON_FLASH){ if(p_skills[id][0]==1) r=255,g=255,b=255 } message_begin( MSG_ONE, gmsgIcon, {0,0,0}, id ) write_byte( value ) // status write_string( string ) // sprite name write_byte( r ) // red write_byte( g ) // green write_byte( b ) // blue message_end() return PLUGIN_CONTINUE } public hook_drop(id) { new parm[1] parm[0] = id remove_task(2300 + id,0) set_task(0.1,"check_shield2",2300 + id,parm,1) return PLUGIN_CONTINUE } public check_shield2(parm[1]) { new id = parm[0] new modelName[32] Entvars_Get_String(id, EV_SZ_viewmodel, modelName, 31) if ( containi(modelName,"v_shield_") != -1 ) gotShield[id]=true else gotShield[id]=false return PLUGIN_HANDLED } public amx_savexp(id, level, cid){ if (!(get_user_flags(id)&ADMIN_LEVEL_A)) { if(id != 0){ client_print(id,print_console,"[%s] You have no access to that command", MOD) return PLUGIN_HANDLED } } new arg[32], xp[10] read_argv(1,arg,31) read_argv(2,xp,9) if(equali(arg,"@ALL")){ new players[32], inum get_players(players,inum) for(new a=0;a1500) health=health-2048 else if (health>500) health = health-1024 show_hudmessage(id,"%s -- %d HP / %d AP / %s",name,health,get_user_armor(pid),wpnname[7]) } else { set_hudmessage(color1,50,color2,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, 4) show_hudmessage(id,name) } } if (get_user_team(id)==get_user_team(pid) && (playeritem2[pid]==CHAMELEON || skinchanged[pid]) && is_user_alive(pid)){ client_print(id,print_center,"He's on your team, DON'T SHOOT") if (file_exists("sound/warcraft3/antend.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/antend.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } } public setTeam(id) g_friend[id] = read_data(2) public Target_Bombed(){ new players[32], numberofplayers get_players(players, numberofplayers) new id, i, parm[1] for (i = 0; i < numberofplayers; ++i){ id=players[i] parm[0]=id set_task(0.1,"check_alive",2,parm,1) } } public T_win(){ if (warcraft3==false) return PLUGIN_CONTINUE new theplayers[32], CTnum, Tnum get_players(theplayers,CTnum,"e","CT") get_players(theplayers,Tnum,"e","TERRORIST") if((Tnum+CTnum)0 && CTnum>0){} else return PLUGIN_HANDLED new players[32], numberofplayers,a get_players(players,numberofplayers,"e","TERRORIST") for (a = 0; a < numberofplayers; ++a){ new temp = (ROUNDXP+xpgiven[p_level[players[a]]]) if (get_cvar_num("FT_objectives")){ new sName[32] get_user_name(players[a],sName,31) client_print(players[a],print_chat, "[%s] %s recieved %d XP for winning the round",MOD,sName,temp) } playerxp[players[a]]+=temp displaylevel(players[a],1) } return PLUGIN_CONTINUE } public CT_win(){ if (warcraft3==false) return PLUGIN_CONTINUE new theplayers[32], CTnum, Tnum get_players(theplayers,CTnum,"e","CT") get_players(theplayers,Tnum,"e","TERRORIST") if((Tnum+CTnum)0 && CTnum>0){} else return PLUGIN_HANDLED new players[32], numberofplayers,a get_players(players,numberofplayers,"e","CT") for (a = 0; a < numberofplayers; ++a){ new temp = (ROUNDXP+xpgiven[p_level[players[a]]]) if (get_cvar_num("FT_objectives")){ new sName[32] get_user_name(players[a],sName,31) client_print(players[a],print_chat, "[%s] %s recieved %d XP for winning the round",MOD,sName,temp) } playerxp[players[a]]+=temp displaylevel(players[a],1) } return PLUGIN_CONTINUE } public check_alive(parm[]){ if (!warcraft3) return PLUGIN_CONTINUE new id = parm[0] if(alive_before_explosion[id] && !is_user_alive(id)){ diedlastround[id]=true alive_before_explosion[id]=false } return PLUGIN_CONTINUE } public calllocustfunction(id){ new parm[11] parm[7]=id new players[32], numberofplayers, i, player, possibility[33], count = 0 get_players(players, numberofplayers) for (i = 0; i < numberofplayers; ++i){ player=players[i] if(get_user_team(player)!=get_user_team(id) && is_user_alive(player) && !hasblink[player] && playeritem[player]!=IMMUNITY){ possibility[count]=player count++ } } if(count==0){ set_hudmessage(178, 14, 41, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 5) show_hudmessage(id,"No valid targets found!") return PLUGIN_CONTINUE } while(parm[6]==0) // Prevents target from being the server parm[6]=possibility[random_num(0,count)] new origin[3], origin2[3] get_user_origin(id,origin) get_user_origin(parm[6],origin2) parm[0]=origin[0] parm[1]=origin[1] parm[2]=origin[2] ultimateused[id]=true if (file_exists("sound/warcraft3/locustswarmloopwav.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/locustswarmloopwav.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) drawfunnels(parm) return PLUGIN_CONTINUE } public drawfunnels(parm[]){ new MULTIPLIER = 150 // the lower the number the faster it reaches the target new id = parm[6] new caster = parm[7] if(playeritem[id]==IMMUNITY || hasblink[id] || !is_user_alive(id)){ ultimateused[caster]=false icon_controller(caster,ICON_SHOW) return PLUGIN_HANDLED } new origin[3], funnel[3], name[32], name2[32] get_user_name(id,name,31) get_user_name(caster,name2,31) get_user_origin(id,origin) funnel[0]=parm[0] // Origin of the funnel funnel[1]=parm[1] funnel[2]=parm[2] icon_controller(caster,ICON_FLASH) message_begin( MSG_BROADCAST, SVC_TEMPENTITY ) write_byte( TE_LARGEFUNNEL ) write_coord(funnel[0]) // origin, x write_coord(funnel[1]) // origin, y write_coord(funnel[2]) // origin, z write_short(snow) // sprite (0 for none) write_short(0) // 0 for collapsing, 1 for sending outward message_end() new xdist = diff(origin[0],funnel[0]) new ydist = diff(origin[1],funnel[1]) new zdist = diff(origin[2],funnel[2]) if(diff(origin[0],(funnel[0]-MULTIPLIER))num2) return (num-num2) else return (num2-num) return 0 } stock cmd_target2(id,const arg[]) { new player = find_player("bl",arg) if (player){ if ( player != find_player("blj",arg) ){ console_print(id,"There are more clients matching to your argument") return 0 } } else if ( ( player = find_player("c",arg) )==0 && arg[0]=='#' && arg[1] ) player = find_player("k",str_to_num(arg[1])) if (!player){ console_print(id,"Client with that name or userid not found") return 0 } return player } // The Following Stock is from Asskickr's include file: stock logKill(attacker, victim, weaponDescription[] ) { //Save Hummiliation new namea[24],namev[24],authida[20],authidv[20],teama[8],teamv[8] //Info On Attacker get_user_name(attacker,namea,23) get_user_team(attacker,teama,7) get_user_authid(attacker,authida,19) //Info On Victim get_user_name(victim,namev,23) get_user_team(victim,teamv,7) get_user_authid(victim,authidv,19) //Log This Kill log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"", namea,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),authidv,teamv, weaponDescription ) }